power-bi-partitions について
Power BI Partitions & Expressions Skillは、pbi-cli-toolを使ってPower BIモデルのテーブルパーティション、名前付き式、カレンダーテーブルを管理します。データモデルの保守担当者向けで、パーティション更新やTMDLのエクスポート、設定上の注意点も扱います。
主な機能
- 01テーブルパーティションの一覧・作成・更新
- 02名前付きM式の管理
- 03カレンダーテーブルの一覧・指定
- 04JSON出力による結果管理
- 05バージョン管理向けTMDLエクスポート
活用シーン
- 01大きなテーブルを日付範囲で分割
- 02新しいデータのあるパーティションだけ更新
- 03データソース接続パラメーターの再利用
- 04日付テーブルを時間インテリジェンス用に指定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ julianobarbosa/ claude-code-skills --skill power-bi-partitionsインストール後、Claude Code で/power-bi-partitionsを入力して読み込まれたか確認します。
詳細
Power BI パーティションと式のスキル
テーブルのパーティション、名前付き式(M クエリ)、カレンダーテーブルを管理します。
前提条件
pipx install pbi-cli-tool
pbi-cli skills install
pbi connect
パーティション
パーティションは、テーブルへのデータの読み込み方法を定義します。各テーブルには、少なくとも 1 つのパーティションがあります。
# List partitions in a table
pbi partition list --table Sales
pbi --json partition list --table Sales
# Create a partition with an M expression
pbi partition create "Sales_2024" --table Sales \
--expression "let Source = Sql.Database(\"server\", \"db\"), Sales = Source{[Schema=\"dbo\",Item=\"Sales\"]}[Data], Filtered = Table.SelectRows(Sales, each [Year] = 2024) in Filtered" \
--mode Import
# Create a partition with DirectQuery mode
pbi partition create "Sales_Live" --table Sales --mode DirectQuery
# Delete a partition
pbi partition delete "Sales_Old" --table Sales
# Refresh a specific partition
pbi partition refresh "Sales_2024" --table Sales
名前付き式
名前付き式は、データソースまたは再利用可能なクエリロジックとして使用する、共有の M/Power Query 定義です。
# List all named expressions
pbi expression list
pbi --json expression list
# Get a specific expression
pbi expression get "ServerURL"
pbi --json expression get "ServerURL"
# Create a named expression (M query)
pbi expression create "ServerURL" \
--expression '"https://api.example.com/data"' \
--description "API endpoint for data refresh"
# Create a parameterized data source
pbi expression create "DatabaseServer" \
--expression '"sqlserver.company.com"' \
--description "Production database server name"
# Delete a named expression
pbi expression delete "OldSource"
カレンダーテーブル
カレンダー/日付テーブルを使うと、DAX でタイムインテリジェンスを利用できます。テーブルを日付テーブルとしてマークすると、TOTALYTD、SAMEPERIODLASTYEAR などの関数を使えるようになります。
# List all calendar/date tables
pbi calendar list
pbi --json calendar list
# Mark a table as a calendar table
pbi calendar mark Calendar --date-column Date
# Alternative: use the table command
pbi table mark-date Calendar --date-column Date
ワークフロー:パーティション分割テーブルの設定
# 1. Create a table
pbi table create Sales --mode Import
# 2. Create partitions for different date ranges
pbi partition create "Sales_2023" --table Sales \
--expression "let Source = ... in Filtered2023" \
--mode Import
pbi partition create "Sales_2024" --table Sales \
--expression "let Source = ... in Filtered2024" \
--mode Import
# 3. Refresh specific partitions
pbi partition refresh "Sales_2024" --table Sales
# 4. Verify partitions
pbi --json partition list --table Sales
ワークフロー:データソースの管理
# 1. List current data source expressions
pbi --json expression list
# 2. Create shared connection parameters
pbi expression create "ServerName" \
--expression '"prod-sql-01.company.com"' \
--description "Production SQL Server"
pbi expression create "DatabaseName" \
--expression '"SalesDB"' \
--description "Production database"
# 3. Verify
pbi --json expression list
ベストプラクティス
- 大きなテーブルではパーティションを使い、増分更新を有効にします
- 新しいデータがあるパーティションのみを更新します(
pbi partition refresh) - 接続パラメーター(サーバー名、URL)を共有するには、名前付き式を使用します
- タイムインテリジェンスを利用するには、必ず
pbi calendar markでカレンダーテーブルをマークします - スクリプトによるパーティション管理には、
--json出力を使用します - モデルを TMDL としてエクスポートし、パーティション定義をバージョン管理します:
pbi database export-tmdl ./model/
注意事項
- **増分更新には、特定の名前と DateTime 型を持つ RangeStart/RangeEnd パラメーターが必要です:**パラメーターの名前が間違っている、DateTime ではなく Date 型になっている、またはポリシーとのバインドがない場合、PBI サービスは通知なく全件更新に切り替えます。モデルは正常に読み込まれるため、問題が判明するのは通常、数週間後にストレージコストが急増し、更新メトリックを確認したときです。
- **
partition refreshが更新するのは指定したパーティションだけですが、下流の計算列はテーブル単位で再構築されます:**パーティション分割されたファクトテーブルに、別のパーティションから派生した計算列がある場合、--type Calculateが実行されるまで値に不整合が生じます。 - **データソースとして使う名前付き式は、インライン化せず名前で参照する必要があります:**接続文字列を複数のパーティションにインライン化すると、PBI サービスで個別のデータソースレコードが作成され、初回更新時にそれぞれで個別に資格情報の入力を求められます。
- **Power BI では、同じテーブル上に DirectQuery パーティションと Import パーティションを混在させることはできません:**一部のバージョンでは CLI が混在モードのパーティション作成を受け付けることがありますが、モデルの更新時に曖昧な「composite model」エラーが発生します。複合モデルでは、パーティションごとではなく、テーブルに対して明示的にデュアルストレージを構成する必要があります。
pbi expression createで値を単一の引用符付き文字列として指定すると、外側の引用符が通知なく失われます:--expression '"https://x.com"'が正しい指定です(M では引用符が必要です)。一方、--expression "https://x.com"は、未定義の識別子を参照する無効な式を作成します。- **
pbi calendar markでマークしたカレンダーテーブルは、CLI からマークを解除できません:**一度マークすると、元に戻すには TMDL のdataCategoryを直接編集するか、Desktop の UI を使用する必要があります。カレンダーテーブルを通常のディメンションに変更する必要がある場合は注意してください。
コメント
Markdown 対応