はじめに
いわゆる「Legacy Excel文化」が根強い組織において、Power Pivotを推進しようとすると、
Power Pivotを全く知らない方に対して、初歩的なことから入念に説明する必要性が発生する。
例:「DAXとは何か」「メジャーとは何か」
そして、こうした初心者の方に効率的に説明するのに最適な記事は意外と少ないため、
Modern Excel上級者の方が日本各地で疲弊していると想像している。
(特に上級者が初心者に運用を引き継ぐタイミングで)
そこで本記事では、
上級者が初心者の方に「これさえ読めば大体なんとかなる」と言って配布できるような、
Power Pivotの超基本的な知識(今回はDAX関数に特化)を解説する。
※あくまでもPower Pivot初心者にDAXへの心理的抵抗を軽減してもらうための記事です。
したがって、情報量を徹底的に削っていて、正確性を重視していない旨をあらかじめご了承ください。
DAXとは
初心者にはこの記事をオススメする。
※個人的には、事前に概要理解を頑張ろうとするよりも、
実際にDAXの使用例にたくさん触れるのを優先したほうが学習効率が高いのではないか?と思う。
したがって、本記事ではDAXの概要には詳しく触れない。
最低限覚えたいDAX関数2選
以下2つの関数は、あらゆるPower Pivotでほぼ確実に使用されるDAX関数である。
一方で、Legacy Excelと関連付けやすい関数であることから、学習コスパは高いといえる。
sum
合計
解説不要。いわゆる「普通のsum関数」と同じ。
違いは、セルではなく列名を引数としている点にある。
※基本中の基本として、dax関数にセルという概念は存在しない
例. sum(Sales[売上金額])
:Salesテーブルの売上金額合計を算出する。
countrows
行数のカウント
テーブルの行数を数える関数である。sumと同じぐらい頻出する。
例. countrows(Sales)
:Salesテーブルの行数を算出する
ちなみにcountもDAX関数として存在するものの、countrows関数を使う機会のほうが多い。
関連docs
Legacy Excelで登場しないDAX特有の関数3選
以下3つの関数は、Legacy Excelユーザーにとってはすべて初見の関数である。
したがって、特に心理的抵抗感が発生しやすいと考えられる。
divide
「安全な」割り算
Legacy Excelに慣れている方は、=iferror(100/0,"")
をイメージすると良い。
要は、割る数がゼロである場合に、エラーにならないようにする関数である。
以下のフレーズを暗記しておけば、ほとんど困らない。
Legacy Excelでの
=iferror(100/0,"")
は、Modern Excelでの=divide(100,0)
と同義である。
calculate
フィルターする
Modern Excel初心者が最も理解するのに苦労する関数である。
ある程度慣れている方であっても、厳密に理解するのがとても大変である。
初心者の段階では、「フィルターする関数」とだけ覚えておくのが効率的と考えられる。
したがって、Legacy Excelで頻出するフィルター機能を思い浮かべながら、以下の式を読むとイメージしやすい。
※sumifs関数をイメージしても良いかもしれない
CALCULATE(
SUM(Sales[Sales Amount]),
'Sales'[Product Color] = "Blue"
)
もしイメージが難しい場合は、以下のように読むと理解しやすい。
Salesテーブルにフィルターをかけて、Product Color列がBlueの行を抽出する。
そして、抽出後のSalesテーブルにおいて、Sales Amount列の合計を算出する。
sameperiodlastyear
1年前のデータを集計する
関数名のとおり、1年前のデータを集計する関数。
上述のcalculateと組み合わせて使用されることが多い。
CALCULATE(
SUM(Sales[Sales Amount]),
SAMEPERIODLASTYEAR(Calendar[Date])
)
他人が作ったPower Pivotを引き継げれば十分というケースでは、
Calendar[Date]
を無視して以下のように読めれば、しばらくの間はなんとかなることが多い。
Salesテーブルにおいて、ちょうど1年前のSales Amount列の合計を算出する。
参考にした記事・docs
「Legacy Excel」
「Legacy Excel」は以下の記事から引用させていただきました。
公式docs