ダンベルチャートとは
2つの値の比較を可視化するチャートで、Tableauでは一般的な表現方法のようです。 目標と結果をならべて表示するよりも、2つの値の差として表現する。カテゴリごとに並べることで、2つの値のトレンドを把握することができる。
Power BI での表現と参考Youtube
Power BI のデフォルトビジュアル「折れ線グラフ」だけで表現する。外部ビジュアルのインポートが不要です。 DAX の考え方や順序だてて理解するには、How to Power BI を参考にする。
準備
Power BI のサンプルデータセットを利用する。 目標と実績のデータはふくまれていないので、便宜的に[Profit] と [Discount] の合計値を比較として採用する。
比較対象のDAX
Total Discout = SUM(financials[Discounts])
Total Profit = SUM(financials[Profit])
DAX / テーブル
ダンベルチャートの折れ線グラフのX軸を定義するテーブル「」
新しいテーブルから作成: それぞれの値から動的に軸の範囲を決定する。 DAX式は最終的な完成形なので、最初はパラメータから使用する。
XAxis = GENERATESERIES( ROUND( MINX(ALLSELECTED( financials[Product] ), MIN( [Total Discout] , [Total Profit] ) ) / 100000 , 0 ) - 1, ROUND( MAXX(ALLSELECTED( financials[Product] ), MAX( [Total Discout] , [Total Profit] ) ) / 100000 , 0 ) +1, 1 )
2つの値と、それらをつなぐ線をあらわすDAX
Dot - Total Discount:
Dot - Total Discount = IF( SELECTEDVALUE('XAxis'[Xasis]) = ROUND([Total Discout]/100000 , 0), 1 )
Dot - Total Profit:
Dot - Total Profit = IF( SELECTEDVALUE('XAxis'[Xasis]) = ROUND([Total Profit]/100000 , 0), 1 )
Range - Discount to Profit:
2つのDotをつなぐ線のDAX
Range - Discount to Profit = VAR _Min = MIN( ROUND( [Total Discout] / 100000 , 0), ROUND( [Total Profit] /100000 , 0) ) VAR _Max = MAX( ROUND( [Total Discout] / 100000 , 0), ROUND( [Total Profit] /100000 , 0) ) VAR _Range = IF( SELECTEDVALUE( XAxis[Xasis] ) >= _Min && SELECTEDVALUE( XAxis[Xasis] ) <= _Max, 1 ) RETURN _Range
\
ビジュアル補助のためのDAX
Labesl Total Profit:
Labesl Total Profit = FORMAT( [Total Profit] , "#,##0,,0")
Labesl Total Discount:
Labesl Total Discount = FORMAT( [Total Discout] , "#,##0,,0")
YAxis Labels:
カテゴリをタイトルの代わりに表示するためのラベル
YAxis Labels = SELECTEDVALUE( financials[Product])
YAxis Item Label Placeholders:
ラベルを「X軸の左端」に配置するための位置DAX
YAxis Item Label Placeholders = VAR _Min = MINX( ALLSELECTED( financials[Product] ), MIN( ROUND( [Total Discout] / 100000 , 0), ROUND( [CF Total Profit] /100000 , 0) ) ) VAR _Label_PlaceHolder = IF( SELECTEDVALUE( XAxis[Xasis] ) = _Min -10, 1 ) RETURN _Label_PlaceHolder
完成
DAXを折れ線グラフに放り込む
ビジュアルを整える