mcpField
P
power-bi-filters

power-bi-filters

github.com/julianobarbosaデータ・データベース1455 回インストール2 日前に更新
リポジトリ

power-bi-filters について

pbiコマンドでPBIRレポートのページやビジュアルにフィルターを追加、一覧表示、削除するスキルです。Power BI Desktopに接続せず、レポートファイルを操作できます。

主な機能

  1. 01ページとビジュアルのフィルター一覧
  2. 02カテゴリーフィルターとTopNフィルターの追加
  3. 03相対日付フィルターの追加
  4. 04フィルターの削除と全消去
  5. 05--no-syncによる変更の一括処理
  6. 06フィルターデータをJSONで出力

活用シーン

  1. 01レポートページを選択したカテゴリーに限定
  2. 02メジャーで順位付けした上位または下位項目を表示
  3. 03レポートにローリング日付範囲を適用
  4. 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 のメモリ内モデルは更新されていません。そこで次に手動編集すると、フィルターの変更が上書きされる可能性があります。

コメント