本ブログのもう一つのトピックはData Model / DAXとなりますが、まずはDAXとは何かについて解説をします。下図の通り、MicrosoftテクノロジーのBIツールであるExcelとPower BIは、使いこなすためには前工程(Power Query)と後工程(Data Model / DAX)を習得する必要があります。
DAXの概要
前工程はPower Queryを用いてデータの整備・集計等を行い、後工程にパスできるようにデータセットのクレンジングを行います。一方、後工程では前工程で整備されたデータをインポートし、データモデルを構築した後に、 DAXを記述してメジャー(売上・利益率等の計算指標)を定義します(下図)。
DAXはData Analysis Expressionの略ですが、Power BIを使う人にとって最も手ごわい言語の1つと言われています。そのため、
D(どう)
A(あがいても)
X(無理)
というダジャレが生まれるほどです。しかしながら、DAXはExcel Power Pivot*1及びPower BIの言語であることから、BIを構築する際に必要不可欠な言語となります。
DAXが難しいと言われるゆえんは、プログラミング言語である一方、その独特な考え方や特徴にあります。
DAXは関数言語であると同時に、クエリ言語である
この意味するところは、関数言語としてのDAXはExcel関数のSUMやVLOOKUP等の数式でスカラー値*2を返す一方、クエリ言語としてのDAXはテーブルを返すことがあるのです。更にユニークなところとして、DAXがPower BIよりも先にExcelのPower Pivotの言語として登場したことをもあり、DAX関数の中にはExcel関数と同じスペルの関数(例:SUM、AVERAGE、IF、AND、LEFT, etc)が数多く存在することです(DAXの特徴については以下の記事も参照)。
DAXを使う必要性
DAXを学習しないといけない理由は例えば以下のような例になります。
上図にはDAXで定義した3つの指標があります。
- 回転区分別在庫高(積み上げ棒グラフ)
- 入荷数(累積)
- 出荷数(累積)
1は在庫の滞留具合を測るための指標であり、New(商品登場から3ヵ月以内)、0-13(0-13週で1回転する在庫)...No Sales(年間売上高ゼロ)別に在庫高を分類したものとなります。詳細は割愛しますが、この指標を算出するためには、
- 在庫高
- 売上原価
- 年間売上原価
- (商品の)初回計上年月
- 在庫計上から現時点までの年月数
といった指標をそれぞれ算出し、その組み合わせで最終的に1つの指標(回転期間区分別在庫高)を計算する必要があります。これは、Excelの通常の数式では到底実現できないものであり、一方でDAXはこれを実現できるわけです。
上図でもう一つの指標は累積の入荷数・出荷数となります。こちらも滞留状況を知る上で有用な指標であり、動きが同じトレンドでなくなった場合、留意が必要となります(下図)。
このように、BIは実はビジネス上に有益な情報を素早く得るための手法、テクノロジーであり、それを実現するためにDAXを勉強する必要があるというわけです。
まとめ
- DAXはBI構築に際して、必要不可欠な言語であり、Power BIやExcel Power Pivotを使いこなすために学習する必要がある
- DAXは関数言語であると同時にクエリ言語である
- DAXはMicrosoftテクノロジーであることや、Excelから生まれた言語であるため、Excelの関数と同じ関数名となっているものも多い
Data Model / DAXの基礎について、初回は簡潔に説明しましたが、次回の基礎2は内容が多くなっているため、時間をかけて見ていきたいと思います。