テクテク日記

テクテク=テクノロジー&一歩ずつ(テクテク)

スライサーで行をハイライト

Power BIのスライサーは選択範囲を限定的なものにし、選択したスライサーの項目でフィルターする機能となります。これはExcelのスライサーと同様の動きですが、このスライサーを使って、Power BIのテーブルビジュアルの行をハイライトさせるやり方を紹介します。

シナリオ

以下のようなPower BIレポートがあります。

通常、スライサーで選択を行うと、以下のようにOverseasと選択すれば、Country = "Overseas"のレコードだけが抽出され、ビジュアル(この場合はテーブル)に反映されます。

同様に、Japanを選択すると、Country = "Japan"のみの結果が抽出されます。

Power BIでレポートを作ったことがある人であれば、これが通常の動きであると何ら不思議に思うことはないでしょう。

一方、今回紹介する内容は以下のように、スライサーをクリックして、「Highlight Overseas」であれば海外、「Highlight Japan」であれば日本の項目だけをハイライトさせる使い方になります。

実際のユースケースとして、

  • 上記のように、大きな括りでテーブルビジュアルの結果をより分かりやすく表現したい場合
  • 特別に目立たせたい項目をハイライトしたい場合

等が考えられますが、応用次第でこれ以外の使い方もあるかもしれません。

テーブルビジュアル

具体的なやり方に入り前に、まずはテーブルビジュアルについて理解する必要があります。テーブルビジュアルは下図の通り、視覚化 > テーブルというアイコンをクリックして挿入しますが、テーブルの列やメジャーは全て同じ「値」に入れます。

出来上がりが、先頭にあるテーブルになりますが、「値」に入れた順番で左から表示されるようになります。また、特徴の1つとして、Shiftキーを押しながら複数の項目(値ヘッダー)をクリックすると、テーブル内で並び替えを行うことができることです。

Power BIにおけるテーブルビジュアルは、

テーブル一覧として項目を分かりやすく表現したい

場合に使用すると良いのですが、Excelのピボットテーブルのような使い方になってしまいますので、項目が多い場合は逆に分かりにくくなってしまうかもしれません。

また、Excelユーザーに多い使い方かもしれませんが、以下①~③の手順で、テーブル内のデータをCSVとして出力したりすることもできます。

出力されたファイルを開くと、以下のように抽出されます。Excelアドホックな分析を行いたい、あるいはデータ量がそれほど多くない場合、定期的にデータを抽出してCSVソースとして保持したい場合に使用できる機能となります。

ただし、一度にエクスポートできる量が30,000行になりますので、留意が必要です。

Power BI ビジュアルからデータをエクスポートする - Power BI | Microsoft Docs

ちなみに、エクスポート時の既定のファイル名はdataとなりますが、テーブルにタイトル名がある場合、そのタイトル名が規定のファイル名となって、エクスポートできるようになります。

ハイライトの構築

至ってシンプルですが、ここから実際にハイライトを行う手順を紹介します。

  1. スライサー用のDisconnectedテーブルを作成
  2. 条件付き書式メジャーを作成
  3. 条件付き書式を使用し、2で作ったメジャーを適用

Disconnectedテーブルは別名、ヘルパーテーブルと言ったりしますが、Disconnectedという名称の通り、

他のテーブルとリレーションシップのないテーブル

となります。DAXでお手軽に作れますので、以下のように操作します。

表示されるDAX数式バーに以下のコードを記載。なお、こちらの数式バーは計算テーブルを作るためのものとなりますので、「ホーム」 > 「新しいメジャー」から作ることはできないことに留意。

これにて、計算テーブルとして、新たにdFlagというテーブルが追加されました。

次にステップ2として、条件付き書式用のメジャーを作ります。その前に、データモデルを確認する必要がありますが、今回は上図の通り、2つのテーブル(BI ToolsとdFlag)が存在するだけになります。

  • HighlightFlag
HighlightFlag = 
var _selected_dFlag = SELECTEDVALUE( dFlag[FlagSort] )    //0 = OTH, 1 = JP
var _selected_country = SELECTEDVALUE('BI Tools'[Country] ) //Japan or Overseas
var _result = 
SWITCH(
    TRUE(),
    _selected_dFlag == 1 && _selected_country = "Japan", 1,
    _selected_dFlag == 0 && _selected_country = "Overseas", 0,
    2
)
return _result
    

このメジャー(HighlightFlag)ですが、結果は0、1、2のいずれかを返します。

  1. dFlagで選択された値が1(=JP)、かつ、(テーブルビジュアルで)Country = "Japan"となっていた場合は1
  2. dFlagで選択された値が0(=OTH)、かつ、(テーブルビジュアルで)Country = "Overseas"となっていた場合は0
  3. それ以外は2

というロジックになります。もう少し分かりやすく説明しますと、下図のように、Highlight Overseasが選択された場合(すなわち、dFlag[FlagSort] = 0が選択された場合)、テーブルビジュアル内でCountry = "Overseas"になっていれば、1という数値が返り、最後のステップ3の設定が終われっていれば、設定された項目がハイライトされるようになります。

ということで、最後のステップ3ですが、以下のように調整をします。

  • テーブルをクリック > ビジュアルの書式設定

  • セル要素 > 系列を選択 > 背景色のfxアイコンをクリック

  • 項目を以下のように設定。③の色については適宜好きな色を選択すればよいが、あまりダークな色にしないことがポイントです。

  • 結果を確認

これでPopularityという項目について、設定が完了しました。ここでお気づきの方もいると思いますが、実はこの条件付き書式の設定、セル要素の全ての項目に対して行う必要があります。非常に面倒ですが、Power BIの仕様になりますので、こればかりはどうしようもありません。

よって、下図のように、新たに「値」フィールドに項目を追加した場合、条件付き書式が反映されない状態になりますので、上記のステップから、「設定の適用先」>「系列」からIsGartnerMQを選択し、背景色をもう一度同じように設定を行う必要があります。

まとめ

  • Disconnectedテーブルを使用すれば、自分が望む形でテーブルビジュアル内の行をハイライトすることができる
  • リレーションシップがないので、スライサーはビジュアルをフィルターすること以外のことを実現できる
  • 設定は面倒であるが、ビジュアルインパクトは抜群