Skip to main content

Tableau Publicに投稿されているマリメッコ分析のダッシュボードを参考に自分でワークブックを作成してみたのですが、参考にしたワークブックの計算フィールドの意味が理解できません。

以下2つのtwbxファイルの計算式について解説頂けないでしょうか?

また、より簡単にマリメッコ分析が出来る式がありましたらご教示いただきたいです。

最終的に縦軸=売上構成比率、横軸=売上の大きさを表したいと思っています。

よろしくお願いいたします。

1 件の回答
  1. 2022年12月20日 6:08

    「最終的に縦軸=売上構成比率、横軸=売上の大きさを表したい」​とのことなので、これにマッチする「マリメッコチャートの作り方_編集」をベースに見てみると、このビューで使用している計算は

     ・サイズ:列ごとの売上

     ・列:積上売上

     ・行:売上の合計に対する割合(表計算)

    の3つです。

    「列ごとの売上」の計算式は {FIXED [地域]:SUM([売上])} ​となっており、地域ごとに売上の合計を計算しています。このビューを再現するだけならLOD表現(FIXED)を使用する意味はないのですが、縦軸方向のディメンションを追加したときに棒グラフの横幅が崩れないようにするためにFIXEDで固定しているという意図だろうと思います。(INCLUDEかEXCLUDEを使ったほうがよい場合もありますがここでは割愛します)

    詳細レベルの式 - Tableau

    「積上売上」の計算式は

    IF FIRST()==0 THEN MIN([列ごとの売上])

    ELSEIF MIN([地域]) != LOOKUP(MIN([地域]),-1) THEN

    PREVIOUS_VALUE(0) + MIN([列ごとの売上])

    ELSE

    PREVIOUS_VALUE(0)

    END

    となっており、PREVIOUS_VALUEを使っているので少し複雑です。​上から順に見ていくと、FIRST()==0、つまり最初のマークの場合は列ごとの売上をそのまま使います。ここで列ごとの売上がMINで集計されていますが、列ごとの売上は先にFIXEDで地域合計に集約されているので、MINにしたところで地域合計であることには変わりありません。これはどちらかというと表計算関数(PREVIOUS_VALUEやLOOKUP)を使うために集計値にする必要があったのでMINを掛けたという意味合いになります。次に MIN([地域]) != LOOKUP(MIN([地域]),-1) とあり、「地域が一つ前の地域と違うなら」という条件になっています。このビューには地域のディメンションしかないので一つ前の地域は必ず別の地域になります。したがって、最初のマークでない場合は必ずこの分岐に入ります。この分岐の内容は PREVIOUS_VALUE(0) + MIN([列ごとの売上]) ですので、一つ前のマークの計算結果に現在見ているマークの列ごとの売上を足した値になります。結果的には累計しているのと一緒です。そして最後の分岐条件はELSEでそれ以外、つまり一つ前の地域と今見ている地域が一緒の場合に判定されます。前述の通りこのビューではこの最後の分岐に入ることはありませんが、ビュー内に別のディメンションを追加するとここに入るケースが出てきます。

    なので、横方向に地域の売上合計の累計​を取りながら棒グラフを横に並べ、縦方向は普通の表計算で合計(総計)に対する割合でグラフが伸びます。横方向だけ見ると「積上売上で横軸上の位置(マークごとの開始地点)を決め、列ごとの売上でその位置から横に伸ばす大きさを決めている」という構造になります。

    このビューを再現する(=ビュー内にディメンションがひとつ)という条件で式をもう少し簡単にするなら、​先に書いたように積上売上の実態はただの累計ですから、一つ前の時点の累計を取ればそこが出発点になります。

    「最終的に縦軸=売上構成比率、横軸=売上の大きさを表したい」​とのことなので、これにマッチする「マリメッコチャートの作り方_編集」をベースに見てみると、このビューで使用している計算は ・サイズ:列ごとの売上 ・列:積上売上 ・行:売上の合計に対する割合(表計算)の3つです。​「列ごとの売上」の計算式は {FIXED [地域]:SUM([売上])} ​となっており、地域ごとに売上の合計を計算していま

    また、サイズも「列ごとの売上」のようにFIXEDで固定してあげる必要はなく、普通に売上の合計を入れればよいです。

    image

0/9000