omiyu1188

Power BI メインで色々書いていきます。

Power BI ブックマーク機能の4つのオプションについて整理した

目次

ブックマークの4つのオプションとは

ブックマークペインにて各ブックマークの右横の「・・・」のメニューを開くと表示される、
「データ」、「ディスプレイ」、「現在のページ」、「すべてのビジュアル」、「選択したビジュアル」のことを指します。

これらのオプションについて、公式ドキュメントでは以下のように書かれています。

各ブックマークでレポート内の他のプロパティを適用するかどうかを選択することもできます。
これらの変更を行うには、ブックマーク名の横にある [その他のオプション] (...) を選択し、
[データ]、[表示] などのコントロールの横にあるチェック マークをオンまたはオフにします。
オプションは次のとおりです。

  • フィルターやスライサーなどのデータプロパティ。
  • スポットライトとその可視性などの表示プロパティ。
  • ブックマークの追加時に表示されていたページが表示される、現在のページへの変更。
  • [すべてのビジュアル] と [選択したビジュアル] のどちらかを選択します。

learn.microsoft.com

これらを実際に有効化 / 無効化するとどうなるのか、実際に検証してみました。

データプロパティ

データプロパティとは、簡単にいうとフィルターの状態を記憶するためのオプションです。
これを有効にすると、特定のビジュアルに関連するフィルター並び替えハイライトドリルダウンなどの設定をブックマークに保存できます。

フィルター条件をブックマークに保存したいときは有効化します。

たとえば、以下のようなレポートがあるとします。レポート上に都道府県スライサーがあります。

以下2つのブックマークを作成しました。

  • 都道府県:都道府県スライサーですべての都道府県を選択している状態で作成
  • 関東:都道府県スライサーで関東地方のみを選択している状態で作成

両方のブックマークでデータプロパティを有効化しておくと、ブックマークを切り替えたとき以下のように動きます。

ブックマークにフィルターが記憶されていることが分かります。

逆に、ブックマークによってフィルター条件を切り替えたくない場合は無効化します。

たとえば、以下の例では日ごとの陽性者数をグラフ表示する用と、テーブル表示する用で2つのブックマークを作成しています。

データプロパティを無効化しているので、ブックマーク切り替え時にフィルター条件は変化することなく、
直前までユーザー側で選択していたフィルターが引き継がれていることが分かります。

ちなみに、表示するビジュアルを切り替える機能の作り方については以下の記事でご紹介しています。
omiyu1188.hatenablog.com

ディスプレイプロパティ

ディスプレイプロパティとは、ビジュアルの表示に関連する設定を記憶するためのオプションです。
有効にすると、スポットライトや特定のビジュアルを表示する / しないなどの状態をブックマークに保存できます。

ビューを切り替えたいときやスポットライトを使って特定のビジュアルを目立たせたいときは有効にします。

たとえば、前項のデータプロパティをオフにする例で出した、
「表示するビジュアルを切り替える機能」を作る場合には、ディスプレイプロパティを有効にしておく必要があります。

表示するビジュアルはそのままで、フィルター条件だけを変更したいときは無効にします。

現在のページプロパティ

現在のページプロパティとは、表示するページを記憶するためのオプションです。
有効にすると、ブックマークを選択したときに保存したページに移動できます。

たとえば、先程のレポートにページ2を追加して、ページ2にてページ1で使用した全都道府県ブックマークを選択してみます。
現在のページプロパティが有効になっているため、全都道府県ブックマーク作成時のページ(ページ1)に移動します。

現在のページプロパティを無効にすると、直前までに開いていたページ(ページ2)から移動することはありません。

すべてのビジュアル / 選択したビジュアル

すべてのビジュアル / 選択したビジュアル のオプションは、どちらか一方を選択する必要があります。

すべてのビジュアル を選択すると

ページ上のすべてのビジュアルの状態をブックマークに保存できます。

たとえば、都道府県スライサーで北海道を選択し、日付スライサーで 2023/01/01~2023/04/16 を選択した後に、
都道府県スライサーのみを選択した状態で「すべてのビジュアル」ブックマークを作成してみます。

一度すべてのスライサーをクリアして、作成したブックマークを選択すると、
都道府県スライサーと日付スライサーのどちらも、設定したフィルター条件が保存されていることが分かります。

次に、選択したビジュアル を選択した場合を試してみます。

選択したビジュアル を選択すると

ページ上のビジュアルのうち、選択したビジュアルの状態をブックマークに保存できます。

すべてのビジュアルのときと同様に都道府県スライサーで北海道を選択し、日付スライサーで 2023/01/01~2023/04/16 を選択した後に、
都道府県スライサーのみを選択した状態で「選択したビジュアル」ブックマークを作成してみます。

一度すべてのスライサーをクリアして、作成したブックマークを選択すると、
都道府県スライサーは北海道のみに絞りこまれますが、日付スライサーの条件は変化しません。

まとめ

改めて、4つのオプションについて整理すると以下のようになります。

オプション 役割
データプロパティ フィルター、スライサーの設定を保存
(並び替え、ハイライト、ドリルダウンなども)
ディスプレイプロパティ ビジュアルの表示に関連する設定を保存
(ビジュアルの可視性やスポットライトなど)
現在のページプロパティ 表示するページを保存
すべてのビジュアル / 選択したビジュアル すべてのビジュアルを選択した場合:ページ上のすべてのビジュアルの状態を保存
すべてのビジュアルを選択した場合:選択したビジュアルの状態を保存

【Twitter分析 × Power BI】Twitterアナリティクスの週次レポートを作ってみた

目次

はじめに

会社で Twitter 運用についての活動報告を週次で行っているのですが、
報告資料を作るために、一週間分の Twitterアナリティクスのデータを取得 → Excel で集計 → Power Point にグラフを出力 という作業が毎週発生していました。

Power BI を使えば自動集計&自動更新が簡単そう、ということでレポートを作ってみます。

下図のように、

  • 今週のトップツイート
  • ツイート数、エンゲージメント数、平均インプレッション数、フォロワー数の推移
  • 今週のツイート一覧

といった要素を可視化してみたいと思います。

データ準備① Twitterアナリティクスデータ

Twitter アナリティクスのデータを取得する方法は2つあります。

  1. Twitter アナリティクスから CSVファイルをエクスポートする方法
  2. Twitter Engagement API を使用する方法
    Twitterの法人プランの契約と API の利用申請が必要です。
    詳細:Engagement API | Twitter API | Docs | Twitter Developer Platform

今回は1つ目の方法でデータを取得します。
Twitter Engagement API の申請が間に合わなかったためです...)

Twitterアナリティクス にログインします。
「ツイート」タブをクリックし、エクスポートする期間を選択して、

「データをエクスポート」をクリックで指定した期間のデータを取得することができます。

※補足:取得できるデータは「By Tweet」と「By day」の2種類があります。

  • By Tweetツイートごとのインプレッション数、エンゲージメント数、リツイート数など
  • By day:日ごとのインプレッション数、エンゲージメント数、リツイート数など

今回は〇月〇日~〇月〇日の約3か月分のデータを「By Tweet」と「By day」の両方エクスポートして SharePoint 上に配置しました。

データ準備② フォロワー数の取得

フォロワー数のデータは Twitterアナリティクスのデータに含まれていないので、別で取得する必要があります。
私は Power Automate の Twitter コネクタを使用して下図のようなフローを作成しました。
毎日フォロワー数を取得して SharePoint 上の Excel に記録することができます。

データ読み込み

取得したデータを Power BI で読み込みます。
Power BI Desktop で「データを取得」→「SharePoint フォルダー」を選択して

サイト URL を入力します。

「データ変換」をクリックして Power Query エディターを起動します。

データ変換

指定したサイトにある全てのファイルが表示されるので、まずは対象のフォルダのデータに絞ります。
今回は「マーケ指標可視化」というフォルダに対象のデータがあるので、
Folder Path 列でテキストフィルターを使用して「マーケ指標可視化」配下のファイルに絞ります。

「マーケ指標可視化」配下のファイルのみに絞りこむことができました。

次に、データの種類ごとに3つのクエリに分けていきます。

  • Twitterアナリティクスデータ(ツイート別):Name が tweet から始まるファイル
  • Twitterアナリティクスデータ(日付別):Name が daily から始まるファイル
  • フォロワー数のデータ:Name が Twitter フォロワー数.xlsx

「管理」→「複製」でクエリの複製を2回行って、

それぞれのクエリに名前をつけます。

それぞれのクエリについて、以下のようにテキストフィルターを適用します。

  • ツイート別:Name が tweet から始まる
  • 日付別:Name が daily から始まる
  • フォロワー数:Name が Twitter から始まる

次に、ファイルの結合を行います。
それぞれのクエリについて、Content 列横の「ファイルの結合」ボタンをクリックします。

結合後のテーブルを確認して、「OK」をクリックします。

不要なカラムを削除して、

必要に応じてカラム名の変更を行います。

ツイート別データの「時間」列にはツイートの投稿日時が入っていますが、
今回は時刻部分は使用しないので「変換」→「日付」→「日付のみ」で日付のみを抽出します。

Power Query エディターを閉じて適用します。

日付テーブル作成

「テーブルツール」→「新しいテーブル」から日付テーブルを作成します。

日付テーブル = 
VAR StartDate = "2021/12/1"
VAR EndDate = MAX('日付別'[日付])
RETURN
ADDCOLUMNS(
    CALENDAR(StartDate, EndDate),
    "年_num", YEAR ([Date]),
    "年", FORMAT ([Date], "YYYY年"),
    "月_num", MONTH ([Date]),
    "月", FORMAT ([Date], "M月"),
    "週_num", FORMAT(WEEKNUM([Date], 2) - WEEKNUM((EOMONTH([Date], -1) + 1), 2) + 1, "0"),
    "週", FORMAT(WEEKNUM([Date], 2) - WEEKNUM((EOMONTH([Date], -1) + 1), 2) + 1, "第0週")
)

作成したテーブルを日付テーブルとしてマークします。

モデルビューで日付テーブルと他のテーブル間のリレーションシップを作成します。

ここまでできたらいよいよレポート作成に入ります。

トップツイートの表示

レポートビューに移動して、「カード」ビジュアルをキャンバスに追加し、「ツイート本文」をフィールドに追加します。
するとツイートが1件表示されますが、これは「あいうえお順」にしたときの先頭のツイートです。

今回はインプレッション数が一番多いツイートを表示したいので上位Nフィルターを使います。
インプレッション数を合計するメジャーを作成し、上位Nフィルターの「値」にドラッグして使用します。

インプレッション_ツイート別_sum = SUM('ツイート別'[インプレッション])

次にこのツイートのインプレッション数、エンゲージメント数、エンゲージメント率、プロフィールアクセス数、URLクリック数を表示したいと思います。
それぞれを合計するメジャーを作成します。

エンゲージメント_ツイート別_sum = SUM('ツイート別'[エンゲージメント])
エンゲージメント率_ツイート別_sum = SUM('ツイート別'[エンゲージメント率])
プロフアクセス数_ツイート別_sum = SUM('ツイート別'[プロフィールアクセス数])
URLクリック_ツイート別_sum = SUM('ツイート別'[URLクリック数])

キャンバスに「複数の行カード」ビジュアルを追加して、フィールドに作成したメジャーを追加します。

ここで表示される値は全ツイートの合計で、表示したいのはトップツイートのデータなので
先程と同じように上位Nフィルターを使用して以下のように設定します。

タイトルやフォントサイズ等を修正します。

ツイート数、プロフィールアクセス数、平均インプレッション数、フォロワー数表示の推移

以下の4つのメジャーを作ります。

ツイート数_sum = SUM('日付別'[ツイート数])
プロフィールアクセス数_sum = SUM('日付別'[プロフィールアクセス数])
インプレッション数_avg = 
DIVIDE(
    SUM('ツイート別'[インプレッション]), 
    COUNTROWS('ツイート別')
)
フォロワー数_max = MAX('フォロワー数'[フォロワー数])

キャンバスに「カード」ビジュアルを4つ追加して、
それぞれのフィールドに作成したメジャーを追加します。

次に、週ごとの推移を表示します。
キャンバスに「面グラフ」ビジュアルを4つ追加して、それぞれの x軸に「年」「月」「日」、Y軸に作成したメジャーを追加します。

今週のツイート一覧

キャンバスに「テーブル」ビジュアルを追加して、列に URL、ツイート本文、エンゲージメント数合計のメジャー等を追加します。

次に URL 列をクリックして該当ツイートのページに飛べるようにします。
URL 列を選択して、データのカテゴリを Web URL として設定します。

テーブルの書式設定で「URL アイコン」をオンにすると、下図のように URL をアイコンに置き換えて表示できます。

テキストの折り返しをオフにして、一度に表示できるツイート数を増やします。

相対日付スライサーの追加

キャンバスに「スライサー」ビジュアルを追加して、
フィールドに日付テーブルの「Date」列を設定します。

書式設定でスタイルを「相対日付」に変更します。

相対日付スライサーを「最近」「1」「週 (暦)」と設定すると、「最近1週間」のフィルターがレポート全体にかかります。

面グラフでは過去データからの変化をみたいので、スライサーからの影響を受けないように設定します。
スライサーを選択 →「書式」タブの「相互作用を編集」を選択 → 面グラフへの作用をオフにします。
(下図の③)

最後に、レポートに動的なタイトルを追加します。
「週次レポート / 〇年〇月〇日週」と表示できるように以下のメジャーを作成します。

タイトル = "週次レポート" & FORMAT(MIN('日付テーブル'[Date]), "yyyy年M月D日週")

カードビジュアルを追加して作成したメジャーをフィールドに設定して完成です。

おわりに

Power BI で作ったレポートは Power Point に埋め込んで使っていて、社内で共有しやすく便利です。
Twitter Engagement API も使えるように手配して、データ取得の作業も自動化できるようにしたいです。

【Microsoft Forms × Power BI】社内勉強会のアンケートを取って可視化する

目次

概要

今回は「社内勉強会後のアンケート」 を想定して、
Microsoft Forms で取ったアンケートの結果を Power BI で可視化してみます。

方法は複数あるのですが、今回は一番早い(と思われる)方法で行います。

事前準備

今回は1つのアンケートを毎週の勉強会で使い回す運用を想定して進めていきます。
そのため、勉強会の日程やその回の内容は別ファイルで管理します。

以下のようなデータを用意して予めレポートに読み込んでおきます。(テーブル名:勉強会スケジュール)

1. アンケート作成

今回は SharePoint から Microsoft Forms を立ち上げてフォームを作ります。
SharePoint を開いて、「ドキュメント」→「+新規」→「Excel 用 Forms」を選択します。

アンケート名を入力して「作成」を選択します。

すると Microsoft Forms が開くので「+新規追加」を押してアンケートを作成していきます。

今回はこんな感じで作りました。↓

アンケートの作成ができたので勉強会参加者に回答してもらいましょう。
画面右上の「回答を収集」からフォームの URL を取得して参加者に共有します。

アンケートに回答してもらったら結果を確認しましょう。
SharePoint に戻って先程作成した xlsx ファイルをデスクトップアプリで開きます。

沢山の回答が集まりました。

2. データ読み込み

Power BI から回答データに接続します。
Power BI Desktop を開き、「データを取得」→「Web」を選択します。

URL の入力を求められます。

先程の xlsx ファイルに戻り、「ファイル」→「情報」→「パスのコピー」で URL を取得します。

Power BI Desktop に戻ってコピーした URL を貼り付け、

"?"以下を消します。

読み込むテーブルを選択して「データの変換」を選択します。

ここから、Power Query エディターでデータの前処理を行います。

まずは、事前準備で用意した「勉強会スケジュールデータ」と紐づけるために、日付列を作成します。
Completion time 列を選択して「列の追加」→「日付」→「日付のみ」を選択します。

Completion time 列から日付列が作成されたので「勉強会スケジュールデータ」との紐づけを行います。

「クエリのマージ」を選択します。

「アンケート結果」の日付列と「勉強会スケジュール」の日付列を選択して左外部結合を行います。

ID列(各勉強会の識別ID)を展開します。

列名が分かりにくいので「ID.1」→「勉強会_ID」と書き換えます。
これを↓

こう↓

次に、下図赤枠の回答結果を「1」~「5」の数値データに変換します。

「内容は理解できた」~「業務に反映できそう」の5列を選択し、「値の置換」をクリックします。

「まったくそう思わない」を「1」に置換します。

同様に、「あまりそう思わない」を「2」、「どちらともいえない」を「3」、「ややそう思う」を「4」、「とてもそう思う」を「5」に置換します。
(リストで一括置換する方法もありますが今回は割愛)

「1」~「5」に置換できたら、データ型を「テキスト」→「整数」に変換します。

列名が長いものは短く修正します。

これでデータの前処理が終わりました。
変更を適用して Power Query エディターを閉じます。

モデルビューで2テーブル間にリレーションシップを作成します。

3-1. タイトル / スライサーの作成

以下の DAX 式で「勉強会スケジュール」テーブルに新しい列を作成します。

タイトル = "第" & '勉強会スケジュール'[ID] & "回:" & '勉強会スケジュール'[テーマ] & "(" & MAX('勉強会スケジュール'[日付]) & ")"

キャンバスにスライサーを追加して、作成した「タイトル」列をフィールドに使用します。
これでページのタイトル兼スライサーの作成ができました。

3-2. 総合満足度、回答者数の可視化

以下のようにメジャーを2つ作成します。

総合満足度 = AVERAGE('アンケート結果'[内容に満足いただけましたか?])
回答者数 = COUNTROWS('アンケート結果')

キャンバスにカードを2つ追加して、作成したメジャーを使用して総合満足度、回答者数を可視化します。

3-3. レーダーチャートの作成

今回は「Radar Chart by MAQ Software」というカスタムビジュアルを使ってレーダーチャートを作成します。

詳細:https://appsource.microsoft.com/ja-jp/product/power-bi-visuals/wa200001561?tab=overview

5つの質問の回答それぞれに対して平均を計算します。
以下のように5つのメジャーを作成します。

内容は理解できた_AVG = AVERAGE('アンケート結果'[内容は理解できた])
興味深い内容だった_AVG = AVERAGE('アンケート結果'[興味深い内容だった])
進行はスムーズだった_AVG = AVERAGE('アンケート結果'[進行はスムーズだった])
勉強になった_AVG = AVERAGE('アンケート結果'[勉強になった])
業務に反映できそう_AVG = AVERAGE('アンケート結果'[業務に反映できそう])

キャンバスに Radar Chart by MAQ Software を追加して Category に「勉強会スケジュール」の ID 列、Values に上記5つのメジャーを使用します。

3-4. 感想の一覧表示

キャンバスにテーブルを追加し「名前」と「感想」を表示します。

3-5. 今後開催してほしいテーマの可視化

以下のメジャーを追加します。

今後開催してほしいテーマ_CNT = COUNT('アンケート結果'[今後開催してほしいテーマ])

円グラフをキャンバスに追加して、凡例に「今後開催してほしいテーマ」、値に上記のメジャーを設定します。

これでレポートの完成です。

参考

www.youtube.com

Power BI で表とグラフを切り替える

目次

概要

レポート上でビジュアルの種類を切り替えたいとき、Power BI ではどうやったらできるのでしょうか。

答えは「選択ペインでビジュアルの表示/非表示を設定してブックマークに保存する」です。
今回はその詳しい手順を紹介していきます。

選択ペインについて:learn.microsoft.com

1. ビジュアルを作成する

2種類のビジュアルを用意します。
今回はテーブルと横棒グラフを使います。

  • 画像左:商品グループ、商品名、数量、売上をテーブルで表示
  • 画像右:商品名ごとの売り上げを横棒グラフで表示

2. ブックマークを作成して、表示する/しないビジュアルを設定する

ブックマークを作成します。
「表示」→「選択項目」から、ブックマークペインを開き、ブックマークを2つ追加します。

「テーブル表示用ブックマーク」、「棒グラフ表示用ブックマーク」と名前を付けます。

次に、それぞれのブックマークに表示するビジュアルを設定していきます。
「表示」→「選択項目」から、選択ペインを開きます。

選択ペインで各レイヤーの表示/非表示を設定することができます。
以下の状態でテーブル表示用ブックマークを更新します。

  • テーブルを表示
  • 積み上げ横棒グラフを非表示

以下の状態で棒グラフ用ブックマークを更新します。

  • テーブルを表示
  • 積み上げ横棒グラフを非表示

これで各ブックマークの設定が完了しました。
画像のように、ブックマークを使って表示するビジュアルを切り替えることができています。

3. ブックマークを切り替えるボタンを作成する

次に、レポート上でもブックマークの切り替え操作ができるようにします。
「挿入」→「ボタン」→「ブックマーク」で、キャンバス上にボタンを2つ追加します。

ボタンの書式設定を行います。
「書式ペイン」→「スタイル」タブを開き、以下のように設定します。

  • テキスト:オン
    • テキスト:「テーブル」と入力
    • 横方向の配置:中央
  • アイコン:オフ
  • フィル:オン
    • 色:白
    • 透過性:0%

ボタンを押したときのアクションを設定します。
「書式ペイン」→「アクション」タブを開いてブックマークを設定します。
ボタンの上にカーソルを置いた際表示したいテキストをツールヒントに入力します。

これで、ボタンの選択でビジュアルを切り替えられるようになりました。

4. ビジュアルの位置を調整していい感じにする

まず、テーブルと棒グラフを重ねます。

次に、選択中のブックマークが何か分かるように少し工夫をしてみます。
「挿入」→「図形の追加」→「線」で、キャンバス上に線を2つ追加します。

画像のように、追加した線をボタンの下に配置します。

テーブル表示のとき棒グラフ用ボタンの下線を非表示に、
棒グラフ表示にのときテーブル用ボタンの下線を非表示になるようにブックマークを更新します。

これで選択中のブックマークが何か分かりやすくなったと思います。

最後に、背景を追加し、テキストボックスを追加してタイトルを付け、ボタンを切り替えタブ風になるように置いてみました。
(レイヤーの順序も選択ペインで変えています。)

おわりに

選択ペインの存在は最近まで知りませんでした。
ビジュアルの切り替え以外にも使えそうなので、またいいアイディアを見つけたら書いていきたいと思います。

参考

learn.microsoft.com

Power BI で上位Nとその他を動的に表示する方法

目次

はじめに

Power BI では「上位 N」フィルターを使用して、上位/下位何件を表示させるか設定することはできるのですが、残ったデータを「その他」にまとめて表示することはできません。

本記事では、DAX を使用してそれをに可能にする方法についてご紹介します。 (下図は完成イメージ)

事前準備

今回使用するのは商品名と売上金額からなる売上データです。(テーブル名:SalesTable)

以下の DAX 式を使用して、売上合計を集計するメジャーを作成しておきます。

TotalSales = SUM('SalesTable'[Sales])

1. 計算テーブルの作成

まず、Product 列に「その他」のデータを追加する必要があります。
以下の DAX 式を使用して、すべての商品を含む新しいテーブル ProductTable を作成し、最後に「Others」の値を持つ行を追加します。

ProductTable = UNION(ALL('SalesTable'[Product]), ROW("Product", "Others"))

次に、作成した計算テーブル ProductTable と元のテーブル SalesTable 間でリレーションシップを作成します。

ここで Product と TotalSales をテーブルで表示してみると、「Others」の TotalSales が表示できないことが分かります。

2. Rank メジャーの作成

TotalSales の大きい順で商品にランク付けを行うメジャーを作成します。

Rank = RANKX(ALLSELECTED(ProductTable[Product]), [TotalSales])

3. 上位 N 選択肢の作成

新しく計算テーブルを作成し、上位 N 件の選択肢を用意します。

TopNSelection = {1,2,3,4,5}

上位 N をレポート上で指定できるようにしたいので、 スライサーを追加して TopNSelection の Value をドラッグします。

スライサーで選択した値を後述の計算に反映するため、以下の DAX 式でメジャーを作成します。

SelectedN = SELECTEDVALUE('TopNSelection'[Value])

4. 上位 N とその他の売上をグループ化

Rank > SelectedN の商品を Others にまとめて売上合計を表示するメジャーを作成します。

TotalSalesWithOthers = 
SWITCH(TRUE(),
    // 1. Product が Others の場合:N+1 以降の Product の売上合計を表示
    SELECTEDVALUE('ProductTable'[Product]) = "Others", 
      CALCULATE(
        [TotalSales],
        FILTER(
            ALLSELECTED('ProductTable'[Product]),
            [Rank] > [SelectedN]
        )
    ),
    // 2. Rank <= SelectedN の場合:各 Product の TotalSales を表示   
    [Rank] <= [SelectedN], [TotalSales],
    // 3. それ以外の場合:空白を表示  
    BLANK()
)

上位 N+1 以下の商品を Others にまとめて売上合計を表示できるようになりました。

5. 並び替えの設定

TotalSales 降順で並び替えると下図のようになります。

Others を最後に表示したいときは、以下のメジャーを追加する必要があります。

RankWithOthers = 
SWITCH(TRUE(),
    // 1. Product が Others の場合:SelectedN+1
    SELECTEDVALUE('ProductTable'[Product]) = "Others", [SelectedN] + 1,
    // 2. Rank <= SelectedN の場合:Rank
    [Rank] <= [SelectedN], [Rank],
    // 3. それ以外の場合:BLANK
    BLANK()
)

テーブルに RankWithOthers をドラッグして RankWithOthers の昇順で並び替えると、Others が最後に表示されます。

6. グラフに条件付き書式を設定

棒グラフで表示してみるとこのようになります。

視覚的に分かりやすくするため上位 N とその他で棒グラフの色を分ける場合は、条件付き書式の設定を行います。
まずは以下の DAX 式を使用してメジャーを作成します。

Color = 
SWITCH (
    SELECTEDVALUE ('ProductTable'[Product]),       
    "Others", "#BBB",                               -- Others の場合はグレー
    "#118DFF"                                         -- それ以外は青
)   

メジャーの作成ができたら、グラフに条件付き書式を設定します。

設定を適用するとこのようになります。

おわりに

以上、上位 N とその他を動的に表示する方法のご紹介でした。
他にも Power BI で見つけた便利な機能や Tips を記事に残していきたいと思います。