Data Model / DAXの基礎 1_DAXとは

本ブログのもう一つのトピックはData Model / DAXとなりますが、まずはDAXとは何かについて解説をします。下図の通り、MicrosoftテクノロジーのBIツールであるExcelとPower BIは、使いこなすためには前工程(Power Query)と後工程(Data Model / DAX)を習得する必要があります。

f:id:marshal115:20200424200205p:plain

DAXの概要

前工程はPower Queryを用いてデータの整備・集計等を行い、後工程にパスできるようにデータセットのクレンジングを行います。一方、後工程では前工程で整備されたデータをインポートし、データモデルを構築した後に、 DAXを記述してメジャー(売上・利益率等の計算指標)を定義します(下図)。

f:id:marshal115:20210330235903p:plain

DAXはData Analysis Expressionの略ですが、Power BIを使う人にとって最も手ごわい言語の1つと言われています。そのため、

D(どう)

A(あがいても)

X(無理)

というダジャレが生まれるほどです。しかしながら、DAXExcel Power Pivot*1及びPower BIの言語であることから、BIを構築する際に必要不可欠な言語となります。

DAXが難しいと言われるゆえんは、プログラミング言語である一方、その独特な考え方や特徴にあります。

DAXは関数言語であると同時に、クエリ言語である

この意味するところは、関数言語としてのDAXExcel関数のSUMやVLOOKUP等の数式でスカラー*2を返す一方、クエリ言語としてのDAXはテーブルを返すことがあるのです。更にユニークなところとして、DAXがPower BIよりも先にExcelのPower Pivotの言語として登場したことをもあり、DAX関数の中にはExcel関数と同じスペルの関数(例:SUM、AVERAGE、IF、AND、LEFT, etc)が数多く存在することです(DAXの特徴については以下の記事も参照)。

marshal115.hatenablog.com

DAXを使う必要性

DAXを学習しないといけない理由は例えば以下のような例になります。

f:id:marshal115:20210331002651p:plain

上図にはDAXで定義した3つの指標があります。

  1. 回転区分別在庫高(積み上げ棒グラフ)
  2. 入荷数(累積)
  3. 出荷数(累積)

1は在庫の滞留具合を測るための指標であり、New(商品登場から3ヵ月以内)、0-13(0-13週で1回転する在庫)...No Sales(年間売上高ゼロ)別に在庫高を分類したものとなります。詳細は割愛しますが、この指標を算出するためには、

  • 在庫高
  • 売上原価
  • 年間売上原価
  • (商品の)初回計上年月
  • 在庫計上から現時点までの年月数

といった指標をそれぞれ算出し、その組み合わせで最終的に1つの指標(回転期間区分別在庫高)を計算する必要があります。これは、Excelの通常の数式では到底実現できないものであり、一方でDAXはこれを実現できるわけです。

上図でもう一つの指標は累積の入荷数・出荷数となります。こちらも滞留状況を知る上で有用な指標であり、動きが同じトレンドでなくなった場合、留意が必要となります(下図)。

f:id:marshal115:20210331003641p:plain

このように、BIは実はビジネス上に有益な情報を素早く得るための手法、テクノロジーであり、それを実現するためにDAXを勉強する必要があるというわけです。

まとめ

  • DAXはBI構築に際して、必要不可欠な言語であり、Power BIやExcel Power Pivotを使いこなすために学習する必要がある
  • DAX関数言語であると同時にクエリ言語である
  • DAXMicrosoftテクノロジーであることや、Excelから生まれた言語であるため、Excelの関数と同じ関数名となっているものも多い

Data Model / DAXの基礎について、初回は簡潔に説明しましたが、次回の基礎2は内容が多くなっているため、時間をかけて見ていきたいと思います。

*1:通常のPivotとは異なり、データモデルにエクスポートされたデータを基にPivotテーブルを作るテクノロジー

*2:Excelのように、セルに表示される値