こんにちは、エクスチュア渡部です。これから定期的にTableauやGoogleDataStudioのTipsを分かりやすくお伝えできればと考えています。
第1回目は、IF文における「集計」「非集計」についてです。
IF関数で計算結果を条件分岐させようとした際、「関数の集計および非集計の引数を混在させることはできません」と言うエラー文に悩まされている方は少なくないと思います。実はこれ、仕組みを理解すればとてもシンプルに解決することが出来ます。
その仕組みとは以下の通りです。
—–
IF [条件式]
THEN [結果1]
ELSE [結果2]
END
において、
① [条件式]が集計なら、[結果1][結果2]も集計。
② [条件式]が非集計なら、[結果1][結果2]も非集計。
ただし以下は注意
(1) NULL及び、数値と文字列( 0,100,’合格’など )は、集計・非集計どちらとしても扱える。
(2) 表計算は「集計」、LOD式は「非集計」として扱われる。※詳細は本記事最下部
—–
集計とは「集計関数を用いた」状態、
非集計とは「集計関数を用いていない」状態(集計関数以外の関数や四則演算などはOK)です。
集計関数は主にSUM,AVG,MAX,MINなどの関数がメインです。
集計関数一覧(Tableauヘルプ)
つまり、
・[条件式]で集計関数を使うなら、[結果1][結果2]も集計関数を使う。
・[条件式]で集計関数を使わないなら、[結果1][結果2]も集計関数は使わない。
ということになります。
また、当然[条件式][結果1][結果2]に使用しているメジャーが、
計算フィールドによって作られた指標である場合、その計算フィールドが集計なら集計、非集計なら非集計として扱われます。
・「集計」「非集計」が混在出来ない理由
では、「集計」と「非集計」はなぜ共存出来ないのでしょうか?
それは集計関数を使った計算と、それ以外の計算の仕方の違いをみれば理解できます。
集計関数は、データソースの該当列の「全ての行」を用いて計算します。
一方で集計関数以外の関数は、全ての行を使用するというようなことはせず、
与えられた引数を処理するのみの関数です。
イメージを用意してみました。
※ROUND関数…指定された桁数に値を丸める関数。
このように計算の仕方が全く違うため、うまく条件分岐が行えなくなってしまうのです。
※「集計」「非集計」について理解を深めたい方は、TableauJapan社による記事をご参照ください。
「集計」「非集計」は最初はなかなか理解しづらい課題ですが、Tableauを使いこなす上での肝となる仕組みです。
仕組みを正確に理解できると、複雑な計算フィールドもスラスラかけたり、LOD式の理解が早まったりと良いことばかりです。
エクスチュアは国内では希少なTableau Certified Professionalも在籍するTableauのパートナー企業です。
また、Google Cloud Platform、Adobe Marketing Cloudといったマーケティングテクノロジーに精通した経験豊富なスタッフが、御社のビッグデータ分析をサポートします。
お問い合わせはこちらから
———
LOD式・表計算の補足
・LOD式
LOD式は、{FIXED [dimension] : SUM([measure])}のひと固まりを非集計として扱います。
補足)LOD式を集計として扱いたい場合は、MAX{FIXED[dimension]:SUM(measure)}と言ったように、LOD式全体を集計関数で囲います。
・表計算
表計算は、「WINDOW_SUM(SUM[measure])」や「index()」といった式全体を集計として扱います。
———-
ブログへの記事リクエストはこちらまで