power-bi-filters について
pbiコマンドでPBIRレポートのページやビジュアルにフィルターを追加、一覧表示、削除するスキルです。Power BI Desktopに接続せず、レポートファイルを操作できます。
主な機能
- 01ページとビジュアルのフィルター一覧
- 02カテゴリーフィルターとTopNフィルターの追加
- 03相対日付フィルターの追加
- 04フィルターの削除と全消去
- 05--no-syncによる変更の一括処理
- 06フィルターデータをJSONで出力
活用シーン
- 01レポートページを選択したカテゴリーに限定
- 02メジャーで順位付けした上位または下位項目を表示
- 03レポートにローリング日付範囲を適用
- 04フィルターをまとめて編集してからDesktopを再読み込み
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill power-bi-filtersインストール後、Claude Code で/power-bi-filtersを入力して読み込まれたか確認します。
詳細
Power BI フィルターのスキル
PBIR レポートページやビジュアルにフィルターを追加、管理します。フィルターは
page.json の filterConfig セクション(ページレベル)または visual.json
(ビジュアルレベル)に保存されます。Power BI Desktop への接続は不要です。
フィルターの一覧表示
# List all filters on a page
pbi filters list --page page_abc123
# List filters on a specific visual
pbi filters list --page page_abc123 --visual visual_def456
各フィルターの名前、種類、フィールド、スコープ(ページまたはビジュアル)が返されます。
カテゴリーフィルター
列の特定の値を含める、または除外します。
# Include only East and West regions
pbi filters add-categorical --page page1 \
--table Sales --column Region \
--values "East" "West"
フィルターはページの filterConfig.filters 配列に表示されます。Power BI は、
指定した列に対する IN リストとして評価します。
TopN フィルター
メジャーで順位付けした上位(または下位)N 件の項目のみを表示します。
# Top 10 products by revenue
pbi filters add-topn --page page1 \
--table Product --column Name \
--n 10 \
--order-by-table Sales --order-by-column Revenue
# Bottom 5 by quantity (ascending)
pbi filters add-topn --page page1 \
--table Product --column Name \
--n 5 \
--order-by-table Sales --order-by-column Quantity \
--direction Bottom
--table と --column では、フィルター対象のディメンション(残したい行)を定義します。
--order-by-table と --order-by-column では、順位付けに使用するメジャーを定義します。
これらには別々のテーブルを指定できます。たとえば、売上金額で商品名をフィルターできます。
方向はデフォルトで Top(降順、上位 N 件)です。昇順(下位 N 件)にするには
--direction Bottom を使用します。
相対日付フィルター
今日を基準にしたローリング期間でフィルターします。
# Last 30 days
pbi filters add-relative-date --page page1 \
--table Calendar --column Date \
--period days --count 30 --direction last
# Next 7 days
pbi filters add-relative-date --page page1 \
--table Calendar --column Date \
--period days --count 7 --direction next
期間のオプション:days、weeks、months、quarters、years。
方向:last(過去)または next(未来)。
ビジュアルレベルのフィルター
ページ全体ではなく、特定のビジュアルにフィルターを追加するには
--visual を指定します。
pbi filters add-categorical --page page1 --visual vis_abc \
--table Sales --column Channel \
--values "Online"
フィルターの削除
# Remove a specific filter by name
pbi filters remove --page page1 --name filter_abc123
# Clear ALL filters from a page
pbi filters clear --page page1
フィルター名は一意の ID として自動生成されます。削除するフィルターの名前を調べるには
pbi filters list を使用します。
ワークフロー:ダッシュボードフィルターの設定
# 1. Add a date filter to the overview page
pbi filters add-relative-date --page overview \
--table Calendar --column Date \
--period months --count 12 --direction last
# 2. Add a TopN filter to show only top customers
pbi filters add-topn --page overview \
--table Customer --column Name \
--n 20 \
--order-by-table Sales --order-by-column Revenue
# 3. Verify
pbi filters list --page overview
自動同期の抑制(--no-sync)
デフォルトでは、書き込みコマンドを実行するたびに Power BI Desktop が自動的に同期されます。 複数のページやビジュアルに連続してフィルターを適用すると、コマンドごとに Desktop が再読み込みされます。
filters コマンドグループで --no-sync を使用してフィルターの変更をまとめて適用し、
最後に pbi report reload を一度だけ実行します。
# Suppress sync while applying filters
pbi filters --no-sync add-categorical --page overview --table "Calendar Lookup" --column "Year" --values "2024"
pbi filters --no-sync add-categorical --page details --table "Product Lookup" --column "Category" --values "Bikes"
# Single reload when all filters are done
pbi report reload
JSON 出力
pbi --json filters list --page page1
注意点
- TopN フィルターの
--table/--columnは残す対象、--order-by-*は順位付けに使う対象です: 2 つを入れ替えてもコンパイルは通りますが、誤ったディメンションで順位付けされ、「上位 10 件の日付」のような結果になり、「上位 10 件の商品」にはなりません。どちらの組み合わせも有効なTable[Column]参照であるため、CLI では不一致を検出できません。 - 相対日付フィルターの基準はモデルのタイムゾーンではなく、Service におけるユーザーのローカル時刻です: 「過去 7 日間」のフィルターは、閲覧者ごとに午前 0 時に更新されます。監査レポートでは、タイムゾーンが異なるユーザー間で合計が異なるため、代わりに絶対日付範囲を使用してください。
filters clearは、以前のブックマークで設定したページレベルのフィルターを含め、すべてを削除します: クリア前の状態で取得したブックマークは、存在しなくなったフィルター ID を参照し続けます。ブックマークを有効にしても、「フィルターが適用されていない」状態として警告なしに動作します。- 自動生成されたフィルター名には、TMDL/PBIR を再エクスポートするたびに変わる GUID が含まれます: エクスポートしたスナップショットに対して
filters remove --name filter_abc123をスクリプトで実行するのは不安定です。スクリプトで削除する前に必ず一覧を再取得するか、CLI が対応している場合は--table/--columnでフィルターを指定してください。 - ビジュアルレベルのフィルターは、ページレベルのフィルターを警告なしに上書きします:
Region = EastのページフィルターとRegion = Westのビジュアルフィルターがあると、ビジュアルは「競合」の警告を出さずに空になります。ビジュアルにデータが表示されない場合は、pbi filters list --page X --visual Yを使用して両方のスコープを確認してください。 --no-syncを使用して最後にpbi report reloadを実行しないと、Desktop には古い状態が表示されたままになります: ディスク上の PBIR ファイルは正しくても、Desktop のメモリ内モデルは更新されていません。そこで次に手動編集すると、フィルターの変更が上書きされる可能性があります。