見出し画像

Tableau×落とし穴 ~前年比成長率~

簡易表計算の前年比成長率、分かっているようで分かっていないかもしれません。DATA Saber Bridge同期のQuestionに対して議論が巻き起こりました。前年比成長率だけにここまで議論する機会はそうそうありません(笑)

前年比成長率とは

(ZN(SUM([売上])) - LOOKUP(ZN(SUM([売上])), -1)) / ABS(LOOKUP(ZN(SUM([売上])), -1))

(売上-前年売上)÷(前年売上の絶対値)

ポイントはLOOKUP(~,-1)です。沼ポイント1でもあります。

LOOKUP(expression, [offset])

現在の行からの相対オフセットとして指定されたターゲット行にある式の値を返します。パーティション内の最初/最後の行に相対的なターゲットには、オフセット定義の一部として FIRST() + n と LAST() - n を使用してください。offset を省略した場合は、比較対象行をフィールド メニューで設定できます。この関数は、ターゲット行を特定できない場合は、NULL を返します。
Tableauヘルプより

どういうことかというと、前年~、を計算で定義しているわけではなく、相対オフセット-1との比較を前年比~と定義している、ということです。

したがって、当然、こういうことも可能です。

前年比成長率の応用

オフセットは必ずとれる?

ここが沼ポイント2です。
オフセットはINDEXの位置を基準に取得するもの、と理解しています。
そして、一般には不連続でここは理解するところでしょう。
だが、しかし!

不連続だけではなく連続だってちゃんとINDEXがとれます

連続でもINDEXはとれます。ということは、連続であってもオフセットはとれるので、前年比成長率で使うexpressionは連続でも不連続でもどっちでもいいはずです。また、日付ではなくてもINDEXはとれるので、データの中身にも制約はないはずです。
だが、しかし!

  • 日付以外の不連続ディメンションで前年比成長率はグレーアウト

  • 日付であっても連続の場合はグレーアウト

仮説

日付であること(=日付性)

簡易表計算の機能としての前年比成長率であるため、概念的に前年がとれない日付型以外では使えない。

簡易であること(=不連続性)

成長率は集計値の比較。集計(GROUP BY)するには不連続のように扱う必要があり変換の裏処理が必要になるので使わせていない。

検証(不連続日付+連続日付)

不連続の日付型に詳細で連続の日付型をいれた場合どうなるか?
不連続性が要件であるならば、この場合、前年比成長率は計算できないはずである。

あれ、前年比成長率が選べてしまいました

仮説の不連続性、は最低1つの不連続の日付型があればよいようです。

ここで疑問。日付型(不連続)+数値型(連続)だったらどうなるのだろう。疑問に思ったら試そうじゃないか。

検証(不連続日付+連続数値)

日付型(不連続)+数値型(連続)も選べるようです・・・なぜ?
連続が「特定のディメンション」として認識されています!

連続であっても、簡易表計算の「表計算の編集」では「ディメンション」として扱われる。そして、ここでいうディメンションはおそらく不連続っぽい動きをしていると思われます。沼ポイント3?

まとめ

「前年比成長率」は奥が深いです・・・(笑

この記事が気に入ったらサポートをしてみませんか?