テクテク日記

テクテク=テクノロジー&一歩ずつ(テクテク)https://aka.ms/techtech2 より、カテゴリー別にフィルターできるようになります。

Power BI サービスからインポートモデルを直接作る

2025年6月に発表された 「インポートモデルにおける Power Query の Web 編集」機能 は、Power BI サービスからインポートモデルを編集できるようになるという大きな発表でした。
Power BI 製品チームの最終的な目標は、Power BI Desktop と Web(Power BI サービス)での作成体験を同一化することにあります。その中で、Web 上でインポートモデルの ETL 部分(Power Query)を直接編集できるようになったのは、この目標に近づくための重要なマイルストーンです。

あまり知られていないことですが、初めてのインポートモデルを Power BI Desktop を使わずに、Fabric Portal=Power BI サービスから直接作成することも可能になっています。
今回は、その具体的な手順をご紹介します。

インポートモデル

Power BI Desktopを初めて使う方のほとんどは、まずインポートモデルから始めることになるでしょう。Power BIのインポートモデル(Import Mode)は、データソースから取得したデータをPower BI Desktop内にキャッシュ(格納)し、分析や可視化を行う方式です。取得したデータは、VertiPaq(カラム型インメモリエンジン)に圧縮・最適化され、DAXクエリに高速に応答できるようになります。

以下はインポートモデルを使った場合のPower BI サービスへ、セマンティックモデルやPower BIレポートを発行するまでの手順となります。

① データソースへのアクセス
Power BI Desktopから、Excel/CSVSQL Database、クラウドサービスなどのデータソースに接続します。

② Power QueryによるETL処理
接続したデータをPower Queryエディタで整形(ETL: Extract, Transform, Load)します。不要な列の削除や型変換、結合などを行い、分析に使いやすい形にします。

③ データのロード
整形されたデータはPower BI Desktopの内部データモデル(VertiPaqエンジン)にロードされます。ここでインメモリに圧縮され、高速な分析が可能になります。

モデリングDAX
ロードしたデータを基に、リレーションシップの定義や階層作成、DAXメジャーによる計算などのモデリング作業を行います。これにより、ビジネスロジックを反映した意味のあるデータモデルが完成します。

⑤ Power BI サービスへ発行
完成したレポートとモデルをPower BI サービス(Fabric Portal)へ発行します。これにより、クラウド上でレポートを共有・利用できるようになります。

⑥ 資格情報の設定
発行後、Power BI Service上でデータソースの資格情報を設定することで、自動更新(スケジュール更新)が可能になります。これにより、常に最新のデータを反映したレポートを利用できます。

これまでインポートモデルを作るといえば、Power BI Desktopを使うのが基本的な流れで、今後もそれが中心であることに変わりはありません。ただ、冒頭でも触れたように、実はPower BI Service側から直接インポートモデルを作れるようになってきています。Desktopを経由しなくても始められるようになったのは、MacBookを使用するユーザーやPower BI Desktopを使用することが出来ないユーザーにとって、かなりの朗報であると言えます。

インポートモデルにおける Power Query の Web 編集

「インポートモデルにおけるPower QueryのWeb編集」とは、Power BI Desktopで作成して発行したセマンティックモデルに対して、Power BI Service上のWebからPower Queryエディタを開き、その中身を編集・更新できる機能です。

ここで混乱しやすいのが、このWeb上のPower QueryエディタはDataflow(Gen1やGen2)とは全く別物だという点です(Dataflowの詳細についてはこちらのブログをご参照ください)。
つい「WebでPower Queryを触る → Dataflowを編集している」と思ってしまいますが、今回の機能はデータフローを経由せずに、セマンティックモデルの一部としてのPower Queryを直接編集できるものになります。

従来の整理

これまでは、Web上でPower Queryを使うといえば、次のような流れでした。

Power Query Online (Web UI)
      ↓
Dataflow (ETL機能)
      ↓
セマンティックモデルからデータソースとして参照

つまり、DataflowをETLの受け皿として構築し、その出力をセマンティックモデルに接続する、というのが一般的でした。

今回の新しい機能

一方で今回の「インポートモデルにおけるWeb編集」では、Dataflowは一切関与しません。

セマンティックモデル (Import)
   └─ ETL部分 = Power Query (Webから直接編集可能)

 
要するに、発行済みのセマンティックモデル自体に埋め込まれているPower Queryを、Web上で直接編集できるようになったのです。セマンティックモデルのデータソースがDataflowであることもありますが、Web編集で操作できるのはDataflowそのものではなく、あくまでセマンティックモデル内でDataflowを呼び出しているPower Query部分です。例えば、下図のような構成がこれになります。

これらの画面はDataflow Gen1でもGen2の画面でもなく、インポートモデルのPower Queryエディタ画面となります。以下のように理解すると分かりやすいと思います。
  • Power BI Dataflowと混同しがちだが別物

  • あくまでインポートモードのセマンティックモデル内のETLをWebから触れるようになっただけ

インポートモデルをPower BI サービスから作る

違いが理解できたところで、ここからは実際に Power BI Service側からゼロから始めて、Power Query Onlineエクスペリエンスを使いながらセマンティックモデルを作成していきます。なお、セマンティックモデルを作るため、Power BI Proのライセンスは必須となります。ワークスペースPro、可能であればFabric容量(Premium)ワークスペースを使用することをお勧めします。

下図は「Power BI Service側からゼロからセマンティックモデルを作成する流れ」を示しています。この流れに沿って、サンプルデータを使って、インポートモードのセマンティックモデルを作ってみましょう。

下記の手順に入る前に、まずは以下のブログを参照し、Webでセマンティックモデルを編集できるようにしておきます。

jpbap-sqlbi.github.io

① Semantic Model を作成

管理ポータルで下記が有効になっていることを確認します。

Power BI Service(Fabricポータル)上のワークスペースから新規に「セマンティックモデル」を作成します。ここが、従来「Power BI Desktopでモデルを作って発行」していた部分に相当します。

ファイルではなく、「データを貼り付けるか、手動で入力する」を選択

名前を適当に変更し、「セマンティック モデルのみを作成する」をクリック

なお、⑥の右側にある下矢印をクリックすると、以下の項目が出現しますが、ここでは残りの2つは無視して、最初の項目だけを選択します。

「データの入力」ダイアログボックスが出現しますが、そのまま「作成」をクリック。

② Power Query データ変換

セマンティックモデルの詳細画面になりますので、「セマンティック モデルを開く」をクリック。

このままでは編集できないので、画面右上にある「表示中」をクリックし、「編集」を選択。

以下のメッセージが流れますが、気にせず待ちます。

ここからデータソースを指定します。ここではオンプレミス SQL Server DBを選択。

オンプレミスデータとなりますので、On-premise Data Gatewayがインストールされていることが必要になります。また、常に最新版をインストールしておくことが重要となります。

お馴染みのPower Queryでデータテーブルを選択する画面になりますのです、必要なテーブルを選択します。ここでは敢えてSalesテーブルを選択せず、別のデータソースから持ってきます。

ファイルの書式はCSVですので、「結合」ではなく、「作成」(=変換)をクリック。

作成されたクエリ名をSalesに変更します。

fxのアイコンをクリックし、「カスタム」というステップを追加します。Binary型の列に対して Table.TransformColumns 関数を使い、Content列のBinaryをテーブルに変換します。その上で、結合に利用できるようにヘッダーの昇格(Table.PromoteHeaders)まで行います。ご覧の通り、「カスタム」というステップが追加されました。

次に、Table.Combine関数を使用し、全てのCSVファイルをダイナミックに結合します(ご参考: CSVの結合)。

これで全てのテーブルが揃いましたので、必要な列を選択し、不要なDummyテーブルを削除します。最終的には以下のようにフォルダ別に整えておきます。

③ データのロード・モデリング

「保存」をクリックすると、下図のように「データを読み込み中」が出現し、データがOn-premise Data Gatewayを通じて変換され、インポートモードとしてデータが圧縮された状態でセマンティックモデルに複製されます。ここまで一切Power BI Desktopを使っておらず、全てWebで完結していることがポイントとなります。

読み込みが完了した後、セマンティックモデルの名前をDummyから別の名称に変更しておきます。

ここからは Power BI サービス側、もしくは Power BI Desktopのライブ編集 を利用してモデリングを進めていきます。ただし注意点として、ライブ編集は Pro/PPU ライセンスでは対象のセマンティックモデルに接続できません。そのため、Power BI Desktopを使ってリレーションシップやDAXメジャーを構築したい場合は、Fabric容量で作成したワークスペースを利用する必要があります。

試しにライブ編集を使ってモデリングをしてみます。Power BI Desktopを開き、「Power BI のセマンティックモデル」を選択。

Pro/PPUワークスペースにセマンティックモデルがある場合、以下のメッセージが出現し、セマンティックモデルにアクセスできません。

ワークスペースをFabric容量にアサインした後、もう一度やってみます。ライブ接続になりますので、レポートビューが消え、一番左側にあるアイコン(上から、①レポートビュー、② テーブルビュー、③ モデルビュー、④ DAX Query View、⑤ TMD View)のうち、①を除く4つのビューだけが表示されるようになります。

リレーションシップを構築した後、DAX Query View で以下のようにDAXメジャーを作成します。ここでは例として売上指標を5つ定義し、最後に 「変更を含むモデルの更新」 をクリックして反映します。

この「ライブ編集」は、Power BI DesktopからPower BI Service上のセマンティックモデルのメタデータにアクセスし、定義を直接変更する仕組みです。そのため、作成・変更した内容はリアルタイムでPower BI Service側のセマンティックモデルに反映されます。

Power BI サービスに戻り、ブラウザを更新すると、以下のようにリレーションシップとDAXメジャーが全て反映されていることを確認できます。

ご覧の通り、今回の手順はすべてPower BI サービス上だけで完結しました。ポイントは、最初にテーブルを1つ手入力で作成し、その後Power Queryエディターから対象のデータソースに接続していく、という流れを押さえておくことです。

今回はステップ④の「Power BIレポート作成」は割愛しましたが、ぜひこの方法を使ってインポートモデルを試してみてください。
特に、Power BI Desktopのインストールが許可されていない環境や、Mac OSなどDesktopを利用できないケースでは、この手法が大いに役立つはずです。

最後に

今回ご紹介した方法には、いくつか注意しておきたいポイントがあります。

  1. 更新ボタンの扱いに注意
    本手順で作成したのはインポートモデルです。そのため、Web UI上で「更新」ボタンを押すと全件データの再取得が行われます。データ量が多い場合は処理に時間がかかったり、容量を圧迫する可能性があるため、むやみに押さないよう注意してください。
  2. ライブ接続でのDAXメジャー作成後
    Power BI Desktopから「ライブ接続」でDAXメジャーを記述した場合は、Power BI Serviceに戻った後でブラウザを更新(リロード)するようにしてください。これにより、実際のデータを更新することなく、メタデータだけを即座に反映でき、追加したDAXメジャーをすぐにPower BI Service上で確認できます。
  3. Web編集における留意点
    Web編集におけるPower Query エディタの操作についての制限を把握しておくと良いと思いますので、下記を重要理解しておくと良いでしょう。

    learn.microsoft.com

今後、Power BI サービスからよりスムーズに直接インポートモデルを作成できるようになるはずです。それまでは、今回ご紹介した手順をぜひ試していただければと思います。