メインコンテンツまでスキップ

Power BIでメトリクス ビューをクエリする

備考

ベータ版

この機能はベータ版です。

BI互換モードを使用するとPower BIレポートやデータ モデルを変更することなく、標準のSQL集計関数を使用してPower BIでUnity Catalogビューをクエリできます。

このページでは、要件、BI 互換モードを有効にする方法、その仕組み、サポートされているクエリ パターン、既知の制限について説明します。

要件

  • Databricks Runtime 18.0以降を実行するSQLウェアハウス
  • ADBC ドライバーを使用した Power BI 接続。新しい接続ではデフォルトで有効になっています。詳細については、 「 Power BI用の ADBC またはODBCドライバーの構成」を参照してください。
  • Power BI Desktop を使用する場合は、v:2.151.1052.0 以上 (2025 年 2 月リリース) が必要です。

BI互換モードを有効にする

Power BI Desktop またはサービスで 新しい Databricks 接続を手動で作成するときに、BI 互換モードを有効にします。

  1. Power BI Desktop またはサービスで、Databricks への新しい接続を作成します。
  2. Databricks サーバーのホスト名 とSQLウェアハウスの HTTP パス を入力します。
  3. [詳細オプション] の [ 詳細 設定] で、 [メトリクス View BI互換Mode[有効] に設定します。
  4. 接続設定を完了します。Power BI接続を手動で作成する手順の詳細については、 Power BIサービスまたはPower BI Desktopに接続する方法」を参照してください。

BI互換モードの仕組み

BI ツールでは、メジャーとディメンションを区別できず、すべての列が標準データ フィールドとして扱われることがよくあります。これにより、いくつかの問題が発生します。

  • 集計の不一致 : メジャーをクエリするために、ユーザーはMEASURE()関数 (たとえば、 SELECT region, MEASURE(totalrevenue) FROM mv GROUP BY region ) を使用しますが、BI ツールはSELECT region, SUM(totalrevenue) FROM mv GROUP BY regionのような標準 SQL を生成します。
  • 非集計クエリ : BI ツールは、 SELECT *または非集計クエリを使用して、データ プレビューの入力、列ドメインの取得、または「データの表示」操作を実行します。互換モードがない場合、メジャーには集計コンテキストが必要であるため、これらのクエリは失敗します。

BI 互換モードでは、これらすべてのケースが Databricks Runtime 内で自動的に処理されます。有効にすると、メトリクス ビューのクエリに次の変換が適用されます。

集計書き換え

メジャー列に適用された標準集計関数は自動的にMEASURE()に書き換えられます:

BIツールは

Databricksの書き換え

SUM(measure_col)

MEASURE(measure_col)

COUNT(measure_col)

MEASURE(measure_col)

MAX(measure_col)

MEASURE(measure_col)

MIN(measure_col)

MEASURE(measure_col)

つまり、 BIツールがどの集計関数をラップするかに関係なく、メトリクス ビューの元のメジャー定義が常に尊重されます。 たとえば、メジャーがSUM(price * quantity)として定義されている場合、 COUNT(total_revenue)AVG(total_revenue) 、およびSUM(total_revenue)すべて同じ結果(基になるSUM(price * quantity)を返します。

細分化されたクエリ

集計関数を使用せずにメジャー列を選択した場合 (たとえば、 SELECT *またはSELECT measure1, measure2 FROM model )、エラーがスローされる代わりに null 値が返されます。

ディメンション列は通常どおり値を返します。メジャー列のみが影響を受けます。

サポートされているクエリパターン

BI 互換モードが有効になっている場合、次のクエリ パターンは意図したとおりに実行されます。

シナリオ

基本的な集計クエリ

SELECT dim, SUM(measure) FROM mv GROUP BY dim``SUMMEASURE()に書き換えられました。

メジャーを使用したORDER BY

SELECT region, SUM(total_cost) FROM mv GROUP BY region ORDER BY SUM(total_cost) DESC

メジャーを含むHAVING句

SELECT region, SUM(total_cost) FROM mv GROUP BY region HAVING SUM(total_cost) > 20

測定値に対するウィンドウ関数

SUM(SUM(total_cost)) OVER (PARTITION BY region ORDER BY sku)

既存のMEASURE()通話

クエリがすでにMEASURE()を使用している場合は、二重ラップなしで実行されます。

非測定集計

COUNT(DISTINCT sku)などの非メジャー列の標準集計は期待どおりに機能し、書き換えられません。

SELECT * および細分化されたクエリ

メジャー列は null 値を返します。これは、データのプレビューとスキーマの検出をサポートします。

ベストプラクティス

  • すべてのメジャー列のデフォルトの集計をSUMのままにします。COUNTDISTINCTVARIANCEなどの他の集計に変更すると、エラーが発生する可能性があります。
  • メジャーをカテゴリ値として使用しないでください。代わりに、メジャー列をビジュアル内の値または定量フィールドにドラッグします。

制限事項

Power BI で BI 互換モードを使用する場合、次の制限が適用されます。

同一の集計結果

SUMCOUNTMINMAXはすべてMEASURE()に書き換えられるため、同じ値を返します。これには 2 つの副作用があります。

  • ピボットおよびマトリックス ビジュアルの総計に予期しない値が表示される場合があります。たとえば、集計としてCOUNT選択すると、総計行に合計が表示されます。
  • AVG集計では1.0が表示されます。内部的にPower BI AVG SUM / COUNTとして実行します。 どちらも同じ測定値を返すため、結果はおよそ1になります。

予期しない合計と平均を回避するには、 Power BIのすべてのメジャー列の仮集計としてSUM使用します。

サポートされていない集計はエラーをスローします

次の集計タイプは集計ラッパーなしでクエリを送信しますが、メトリクス ビューではメジャー列に対してはサポートされていません。

  • カウント(個別)
  • 標準偏差
  • variance
  • 中央値

メジャーはカテゴリ値またはディメンション値として使用できません

メジャー列をカテゴリ値として軸、凡例、 GROUP BY 、またはスライサーにドラッグすると、クエリは次のエラーで失敗します。

Text
Measure columns cannot be used in GROUP BY clause or as categorical values. We recommend wrapping them with an aggregate function such as SUM() for the expected behavior.

メジャー列をディメンション、グループ化フィールド、またはフィルター ターゲットとして使用しないでください。

複数のメジャーを持つ計算フィールド

SUM(m1 + m2)のような式は、複数のメジャー列を 1 つの集計に結合するため、BI 互換モードによって書き換えられません。これらの式はエラーまたは予期しない結果を生成します。

Power BI のメジャー列の定量スライサーがエラーを起こして失敗する

メジャー列の定量的スライサーは機能しているように見えますが、メトリクス ビューではフィルター述語としてのメジャーの使用がサポートされていないため、フィルターは適用されません。

ディメンションフィルタリングとスライス

BI 互換モードを使用する場合、Power BI ビジュアルはディメンション列に対する次の操作をサポートしません。

  • ディメンションにフィルターを適用する
  • ディメンションをスライサーコントロールとして使用する
  • ビジュアル間のディメンション値のクロスフィルタリング

追加リソース