はじめに
Microsoft Fabric を利用して、Dataflow Gen2 → Lakehouse → セマンティックモデル → Power BI レポートの一連の構成を組む中で、
データフローで列を追加したら、その列はセマンティックモデルにも自動で反映されるのか?
という疑問があったため、実際に手順を踏んで挙動を検証してみました。
1. Dataflow Gen2 の作成と Lakehouse への書き込み
データフローの作成と接続設定
- Fabric のワークスペースから 新しいデータフロー (Gen2) を作成
- 任意の名前を付けて開始
- 今回はデータソースとして、SQL Server をデータソースとして選択し、接続を設定
- カスタム SQL ステートメントでクエリを記述し、必要な列を取得
PowerQuery での編集処理
- 必要に応じて、列のデータ型変更や変換処理などを実施
- 編集が完了したら、「次へ」で同期先の設定へ進む
Lakehouse を同期先に設定
- 出力先に「Lakehouse」を指定し、テーブル名を設定
- 「自動設定を使用する」を選択し、マッピングが正しく行われているか確認
- 設定が完了したら「保存と実行」を実施
同期結果の確認
- 実行ステータスが「成功」となれば OK
- Lakehouse 側に新たなテーブルが作成され、データが反映されていることを確認
2. セマンティックモデルとレポートの作成
セマンティックモデルの作成
- Fabric 上で「新しいセマンティックモデル」を作成
- 対象の Lakehouse テーブルを選択し、モデルを作成
- メジャーやデータ型の微調整が可能
レポートの作成
- 作成したセマンティックモデルをベースに、新規レポートを作成
- グラフやカードなどを使ってビジュアルを構成し、「保存」
3. データフローでの列追加とセマンティックモデルへの反映検証
データフローで列を追加・編集
- 既存のデータフローを編集
- カスタム SQL に新しい列を追加するなどして、PowerQuery 上に列が増えるよう調整
- 編集後、「保存と実行」で再度実行
Lakehouse テーブルへの反映確認
- テーブルを開いて新しい列が追加されていることを確認
- 値の変化や型も正しく反映されているかチェック
セマンティックモデルに反映されるか?
- 結論:セマンティックモデルには自動では反映されません
「更新」操作をしても、初回作成時の列スキーマが保持され、新しい列は表示されません。
手動で列を反映させる方法
- セマンティックモデルの「編集モード」に入る
- 該当のテーブルをクリックし、「テーブルを編集」
- 上部の「リロード」ボタンをクリック
- 最新のスキーマが取得され、「確認」をクリックすると列が反映される
レポートへの反映
- モデルに列が取り込まれると、レポート側でも新しい列が使用可能になります
- グラフやテーブルに追加して可視化することができます
おわりに
Microsoft Fabric のセマンティックモデルは非常に便利ですが、Lakehouse 側のスキーマ変更(列追加など)は自動では反映されないことを確認しています。
そのため、データフローやソースを更新した後は、セマンティックモデルで手動の「リロード+確認」操作を忘れずに行いましょう。
参考リンク
詳細手順(画面キャプチャー付き)
それぞれの詳細手順は以下になります。
1.データフローを作成・設定・実行し、Lakehouse側にデータを書き込む
SQL Server と接続して、カスタマイズSQLステートメントを指定する
PowerQuery操作画面で、要件に応じて列のデータ型を変更したり、クエリ設定で処理ステップ(データ型変更など)を実施する
データ同期先に、+ボタンをクリックし、レイクハウスを選択する
新しいテーブルを選択する。
同期先のレイクハウス名を選択し、テーブル名を指定する。
「自動設定を使用する」を選択し、列マッピングにエラーがないことやマッピングされたデータ型に警告がないことを確認してから設定を保存する。
自動設定詳細については、必ず、下記公開情報を参考にしてください。
https://learn.microsoft.com/ja-jp/fabric/data-factory/dataflow-gen2-data-destinations-and-managed-settings
データ同期先の設定が完了したら、念のため設定内容を確認する。(データ同期先のレイクハウスにカーソルを合わせるとポップアップが表示される)
データフローの最新の実行を確認し、状態が進行中であることを確認する。
アクティビティ名をクリックすると、データがレイクハウスに書き込まれたことを示す情報が表示される。
Lakehouse側でテーブルが新たに作成されていることを確認し、列名やデータ型が想定どおりであるかを確認する。
ーーーここまで、データフローの作成・設定・実行を一通り終え、Lakehouse側にテーブルとデータが書き込まれたことを確認ーーー
2.Lakehouseのテーブルを基にセマンティックモデルを作成し、レポートを作成する
Lakehouseのテーブルをもとに、新しいセマンティックモデルを作成する
セマンティックモデルの名前を指定し、対象テーブルを選択する。
新しいレポートを作成する。必要に応じて、セマンティックモデルのバージョン履歴に保存しておく。
3.データフローで分析対象データの編集や列の追加を行い、その変更がLakehouseテーブルおよびセマンティックモデルに反映されることを確認する
要件に応じて、データフロー側で処理の変更や追加のデータ加工が必要な場合は、データフロー上で対応する。
この例では、値の修正やSQLステートメントを用いた列の追加を想定している。
・値の修正:
各修正内容が PowerQuery の操作画面に反映されていることを確認する。
Lakehouseテーブル側でデータ変更が反映されるか、最新の情報に更新する。
セマンティックモデルは、初回作成時のスキーマを基に構築されるため、後からテーブルに列を追加しても自動では反映されないことを確認している。
以下の例ですと、「更新」を実施しても新規の列は追加されていないことを確認。
このとおり、セマンティックモデルを更新しても初回作成スキーマのままが保持されます。
追加した列をセマンティックモデルに反映するには、手動での編集を実施する。