Power BI ダッシュボードビルダー
ダッシュボード仕様書(bi-dashboard-design/references/dashboard-spec.md を参照)を、動作可能な Power BI アーティファクトに変換します。ドメイン知識はドメインスキルから、レイアウトとスタイルのルールは bi-dashboard-design から取得します。このスキルは Power BI 固有の部分をカバーします。
最初にビルドモードを選択する
利用可能なものを確認し、どのモードを使用するかをユーザーに伝えてください。
| モード | 使用する場合 | 生成されるもの |
|---|---|---|
| A. MCP/CLI 経由のライブモデル | Power BI Modeling MCP サーバー (@microsoft/powerbi-modeling-mcp) または pbi-cli が接続されており、Power BI Desktop でモデルが開かれている場合 | 開かれているモデルにテーブル、リレーションシップ、メジャーを直接作成。レポートは PBIR ファイルとして構築 |
| B. PBIP プロジェクトファイル | ファイルの書き込みは可能だが、ライブ接続がない場合 | .pbip プロジェクトフォルダ: <Name>.SemanticModel/definition/*.tmdl および <Name>.Report/definition/ (PBIR)。ユーザーが Power BI Desktop で開く |
| C. ビルドキット | ファイルもツールも実用的でない場合(チャットのみなど) | DAX メジャースクリプト、TMDL スニペット、テーマ JSON、開発者が従うページごとのビルドシート |
モード A、次に B を優先します。モード B では、Power BI Desktop のプレビュー機能としてまだプレビュー状態である場合、ユーザーに PBIP 保存オプションと「TMDL 形式を使用してセマンティックモデルを保存する」を有効にするように促してください。
ワークフロー
- 仕様書とドメインメトリクスファイルを読む。 作成するすべてのメジャーは、ドメインスキルの
<domain-skill>/references/metrics.mdにある定義と一致している必要があります。 - スタースキーマをモデル化する (
references/tmdl-patterns.mdを参照):- 仕様書内の粒度ごとに1つのファクトテーブル。ディメンションはファクト間で適合しています。
- 専用の
Dateテーブルを日付テーブルとしてマークし、連続的で、すべてのファクト日付をカバーし、ドメインが会計カレンダーを使用する場合は会計列を含めます。 - ディメンションからファクトへの単方向の一対多リレーションシップ。双方向は、書面による理由がある場合のみ使用します。ロールプレイング日付(請求日 vs 期日 vs 支払日):1つのアクティブなリレーションシップと、その他は非アクティブにしてメジャー内で
USERELATIONSHIPで有効化します。 - 外部キーと、メジャーに置き換えられた生の数値列を非表示にします。キー、ID、年月数値には
summarizeBy: noneを設定します。 - 月名やバケットラベル(経過日数、バンド)の並べ替え列。
- メジャーを作成する (
references/dax-patterns.mdを参照):_Measuresテーブル、テーマごとの表示フォルダ(例:01 Revenue、02 Margin)、すべてのメジャーに書式文字列と説明を設定します。最初に基本メジャーを作成し、次に比率、時間インテリジェンス、表示ヘルパー(変化率%、矢印、ステータス色)を作成します。 - レポートページを作成する (
references/report-pbir.mdを参照):各仕様コンポーネントをビジュアルにマッピングし、グリッドマッピングを使用して 1280×720 のキャンバスに配置し、bi-dashboard-design/references/theme-tokens.mdからテーマを適用し、ドリルスルーページとリセットブックマークを追加します。 - セキュリティ: 仕様に
row_levelがある場合、関連するディメンションに DAX フィルターを使用して RLS ロールを作成し、Service でメンバーを割り当てる方法を文書化します。 - 検証:
references/dax-patterns.md#verificationの DAX チェック(合計がソースと一致する、最新期間の時間インテリジェンスが値を返す、空白の KPI がない)を実行し、bi-dashboard-designの受け入れチェックリストを実行します。検証できなかったことを報告します。
グリッドマッピング (1280 × 720 キャンバス)
- マージン 16 px; 使用可能幅 1248 px; 88 px の 12 列 + 16 px のガター。
- 列スパン
c→ 幅c*88 + (c-1)*16px; x =16 + col_index*104。 - 1 高さ単位 = 56 px + 16 px ガター(ヘッダー行 ≈ 64 px)。
- 長いページ:L1/L2 では垂直スクロールよりも 2 ページ目を優先。L3 の詳細ページでは、テーブル用により高いキャンバス (1280 × 1440) を使用する場合があります。
ビジュアルマッピング
| 仕様コンポーネント | Power BI ビジュアル | 備考 |
|---|---|---|
| kpi_card | カード (新) / KPI | 比較用の参照ラベル。メジャーによる条件付き色 |
| trend_line | 折れ線グラフ | ターゲットを 2 番目のメジャーまたは定数線として。相対日付フィルターまたはメジャーウィンドウを使用して 13 か月 |
| ranked_bar | クラスター化された棒 | 上位 N フィルター + 必要に応じて動的分割メジャーによる「その他」 |
| variance_bar | 分散メジャーのクラスター化された棒 | Var 符号 × 方向によるルールで色付け |
| waterfall | ウォーターフォール | 内訳フィールド = ドライバーディメンション |
| stacked_bar | 100% 積み上げ棒 | |
| matrix | マトリックス | 行階層、値 Actual/Budget/Var/Var%、Var% のセル要素 |
| exception_table | テーブル | 上位 N または重大度フィルター、条件付きアイコン、ドリルスルー有効 |
| aging_buckets | クラスター化された列 | バケット順位列で並べ替えられたバケット列 |
| funnel | ファネルまたは棒 | ステージ順に並べ替えられた棒の方が読みやすい |
| map | Azure Map / 塗りつぶしマップ | テナントがマップを許可している場合のみ |
| slicer | スライサー(ドロップダウンまたはタイル) | 期間と組織のスライサーをページ間で同期 |
ガードレール
- メジャー内で
"2026-10-31"のように日付をハードコードしないでください。「最新の完了期間」をデータまたはパラメータから導出します。 - すべての比率に
DIVIDE()を使用します。比率を複数行にわたって平均化しないでください。 - 計算列よりもメジャーを優先します。DAX 計算テーブルよりも Power Query / ウェアハウスの変換を優先します。
- 仕様で要求され、RLS/OLS が設定されていない限り、機密列(SSN、患者名、給与詳細)をインポートしないでください。
- 自動日付/時刻をオフにしてください。モデルを肥大化させ、Date テーブルと競合します。
参照ファイル
references/tmdl-patterns.md– テーブル、列、リレーションシップ、Date テーブル、ロールの TMDL 構文。モード A/B で読み取ります。references/dax-patterns.md– 再利用可能な DAX:比率、時間インテリジェンス、半加算スナップショット、経過日数バケット、Top N + Other、表示ヘルパー、検証クエリ。references/report-pbir.md– PBIR フォルダレイアウト、ビジュアル JSON の基本、ドリルスルー、ブックマーク、およびモード C のビルドシート形式。