概要
| Item | Description |
|---|---|
| リリース状況 | 一般提供 |
| プロダクツ | Excel Power BI (セマンティック モデル) Power BI (データフロー) ファブリック (データフロー Gen2) Power Apps (データフロー) Dynamics 365 Customer Insights |
| サポートされている認証の種類 | 組織アカウント |
| 関数リファレンス ドキュメント | — |
注
一部の機能は 1 つの製品に存在する可能性がありますが、展開スケジュールとホスト固有の機能のため、他の製品には存在しない場合があります。
[前提条件]
Azure サブスクリプション。 Azure 無料試用版の取得に関するページをご覧ください。
Microsoft Entra ID のメンバーである組織の電子メール アカウント。 この記事では、このアカウントを使用して 、Azure Data Explorer ヘルプ クラスター のサンプルに接続します。
サポートされている機能
- Import
- DirectQuery (Power BI セマンティック モデル)
- 高度なオプション
- クエリ結果レコード番号を制限する
- クエリ結果のデータ サイズをバイト単位で制限する
- 結果セットの切り捨てを無効にする
- 追加のセットステートメント
Power Query Desktop から Azure Data Explorer に接続する
Power Query Desktop から Azure Data Explorer に接続するには:
データの取得エクスペリエンスで Azure Data Explorer (Kusto) を選択します。 Power Query Desktop でのデータ取得エクスペリエンスは、アプリによって異なります。 Power Query Desktop でアプリのデータ エクスペリエンスを取得する方法の詳細については、「データを取得する場所」を参照してください。
Azure Data Explorer (Kusto) で、Azure Data Explorer クラスターの名前を指定します。 この例では、
https://help.kusto.windows.netを使用してサンプル ヘルプ クラスターにアクセスします。 その他のクラスターの場合、URL は https://<ClusterName>.< の形式です。Region>.kusto.windows.net。接続しているクラスターでホストされているデータベースと、データベース内のテーブルの 1 つ、または
StormEvents | take 1000などのクエリを選択することもできます。事前オプションを使用する場合は、オプションを選択し、そのオプションで使用するデータを入力します。 詳細情報: 詳細オプションを使用して接続
注
すべての詳細オプションとデータ接続の選択を表示するには、下にスクロールすることが必要な場合があります。
インポート または DirectQuery データ接続モードを選択します (Power BI Desktop のみ)。 詳細情報: インポート モードまたは直接クエリ モードを使用する場合
[OK] を選択して続行します。
クラスターへの接続がまだない場合は、[ サインイン] を選択します。 組織のアカウントでサインインし、[ 接続] を選択します。
ナビゲーターで、目的のデータベース情報を選択し、[読み込み] を選択してデータを読み込むか、[データの変換] を選択して Power Query エディターでデータの変換を続行します。 この例では、StormEvents が Samples データベースで選択されています。
Power Query Online から Azure Data Explorer に接続する
Power Query Online から Azure Data Explorer に接続するには:
データの取得エクスペリエンスで Azure Data Explorer (Kusto) オプションを選択します。 Power Query Online でデータを取得する方法は、アプリによって異なります。 Power Query Online にアクセスしてアプリからデータ エクスペリエンスを取得する方法の詳細については、「データを取得する場所」を参照してください。
[ データ ソースへの接続] で、Azure Data Explorer クラスターの名前を指定します。 この例では、
https://help.kusto.windows.netを使用してサンプル ヘルプ クラスターにアクセスします。 その他のクラスターの場合、URL は https://<ClusterName>.< の形式です。Region>.kusto.windows.net。接続しているクラスターでホストされているデータベースと、データベース内のテーブルの 1 つ、または
StormEvents | take 1000などのクエリを選択することもできます。
事前オプションを使用する場合は、オプションを選択し、そのオプションで使用するデータを入力します。 詳細情報: 詳細オプションを使用して接続
必要に応じて、データ ゲートウェイでオンプレミス データ ゲートウェイを選択します。
クラスターへの接続がまだない場合は、[ サインイン] を選択します。 組織のアカウントでサインインします。
正常にサインインしたら、[ 次へ] を選択します。
[ データの選択 ] ページで、目的のデータベース情報を選択し、[ データの変換 ] または [次へ ] を選択して、Power Query エディターでデータの変換を続行します。 この例では、StormEvents が Samples データベースで選択されています。
詳細オプションを使用して接続する
Power Query Desktop と Power Query Online の両方に、必要に応じてクエリに追加できる一連の高度なオプションが用意されています。
次の表に、Power Query Desktop と Power Query Online で設定できるすべての詳細オプションを示します。
| 詳細オプション | Description |
|---|---|
| クエリ結果レコード番号を制限する | 結果で返されるレコードの最大数。 |
| クエリ結果のデータ サイズをバイト単位で制限する | 結果で返される最大データ サイズ (バイト単位)。 |
| 結果セットの切り捨てを無効にする |
notruncation要求オプションを使用して、結果の切り捨てを有効または無効にします。 |
| その他の Set ステートメント | クエリの期間のクエリ オプションを設定します。 クエリ オプションは、クエリの実行方法を制御し、結果を返します。 複数の Set ステートメントはセミコロンで区切ることができます。 |
Power Query UI で使用できない追加の詳細オプションの詳細については、 M クエリでの Azure Data Explorer コネクタ オプションの構成に関するページを参照してください。
インポート モードまたは直接クエリ モードを使用する場合
インポート モードでは、データは Power BI に移動されます。 DirectQuery モードでは、データはクラスターから直接照会されます。
インポート モードは、次の場合に使用します。
- データ セットが小さい。
- ほぼリアルタイムのデータは必要ありません。
- データは既に集計されているか、Kusto で集計を実行しています。
DirectQuery モードは、次の場合に使用します。
- データ セットが非常に大きい。
- ほぼリアルタイムのデータが必要です。
DirectQuery の使用方法の詳細については、「 Power BI での DirectQuery の使用について」を参照してください。
Azure Data Explorer コネクタを使用してデータを照会するためのヒント
次のセクションでは、Power Query で Kusto クエリ言語を使用するためのヒントとテクニックについて説明します。
Power BI の複雑なクエリ
複雑なクエリは、Power Query よりも Kusto でより簡単に表現できます。 これらは Kusto 関数として実装し、Power BI で呼び出す必要があります。 このメソッドは、Kusto クエリで DirectQuery と let ステートメントを使用する場合に必要です。 Power BI は 2 つのクエリを結合し、 let ステートメントを join 演算子で使用できないため、構文エラーが発生する可能性があります。 そのため、結合の各部分を Kusto 関数として保存し、Power BI でこれら 2 つの関数を結合できるようにします。
相対日時演算子をシミュレートする方法
Power Query には、などのago()日時演算子は含まれません。
ago()をシミュレートするには、DateTime.FixedLocalNow 関数と Power Query M 関数 #duration 組み合わせて使用します。
このクエリの代わりに、 ago() 演算子を使用します。
StormEvents | where StartTime > (now()-5d)
StormEvents | where StartTime > ago(5d)
次の同等のクエリを使用します。
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", []),
#"Filtered Rows" = Table.SelectRows(Source, each [StartTime] > (DateTime.FixedLocalNow()-#duration(5,0,0,0)))
in
#"Filtered Rows"
M クエリでの Azure Data Explorer コネクタ オプションの構成
Azure Data Explorer コネクタのオプションは、M クエリ言語の Power Query 詳細エディターから構成できます。 これらのオプションを使用すると、Azure Data Explorer クラスターに送信される生成されるクエリを制御できます。
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [<options>])
in
Source
M クエリでは、次のいずれかのオプションを使用できます。
| Option | Sample | Description |
|---|---|---|
| MaxRows | [MaxRows=300000] |
truncationmaxrecords set ステートメントをクエリに追加します。 クエリが呼び出し元に返すことができるレコードの既定の最大数をオーバーライドします (切り捨て)。 |
| 最大サイズ | [MaxSize=4194304] |
truncationmaxsize set ステートメントをクエリに追加します。 クエリが呼び出し元に返す既定の最大データ サイズをオーバーライドします (切り捨て)。 |
| NoTruncate | [NoTruncate=true] |
notruncation set ステートメントをクエリに追加します。 呼び出し元に返されるクエリ結果の切り捨てを抑制できるようにします。 |
| 追加セットステートメント | [AdditionalSetStatements="set query_datascope=hotcache"] |
指定された set ステートメントをクエリに追加します。 これらのステートメントは、クエリの期間のクエリ オプションを設定するために使用されます。 クエリ オプションは、クエリの実行方法を制御し、結果を返します。 |
| CaseInsensitive | [CaseInsensitive=true] |
コネクタで大文字と小文字を区別しないクエリを生成します。クエリでは、値の比較時に=~演算子の代わりに==演算子を使用します。 |
| ForceUseContains | [ForceUseContains=true] |
テキスト フィールドを操作するときに、既定のcontainsではなくhasを使用するクエリをコネクタで生成します。
hasははるかにパフォーマンスが高くなりますが、部分文字列は処理されません。 2 つの演算子の違いの詳細については、 文字列演算子を参照してください。 |
| Timeout | [Timeout=#duration(0,10,0,0)] |
指定された期間にクエリのクライアントとサーバーのタイムアウトの両方を構成します。 |
| ClientRequestIdPrefix | [ClientRequestIdPrefix="MyReport"] |
コネクタによって送信されるすべてのクエリの ClientRequestId プレフィックスを構成します。 これにより、特定のレポートやデータ ソースから取得されたクエリをクラスター内で特定できます。 |
注
複数のオプションを組み合わせて、必要な動作に到達できます。 [NoTruncate=true, CaseInsensitive=true]
Kusto クエリの制限に到達する
Kusto クエリは、クエリ制限で説明されているように、既定で最大 500,000 行または 64 MB を返 します。 これらの既定値は、Azure Data Explorer (Kusto) 接続ウィンドウの [詳細設定] オプションを使用してオーバーライドできます。
これらのオプションは、クエリに set ステートメント を発行して、既定のクエリ制限を変更します。
-
クエリ結果レコード番号を制限 すると、
set truncationmaxrecords -
クエリ結果のデータ サイズをバイト単位で制限 すると、
set truncationmaxsize -
結果セットの切り捨てを無効化すると、
set notruncation
大文字と小文字の区別
既定では、コネクタは文字列値を比較するときに大文字と小文字を区別する == 演算子を使用するクエリを生成します。 データで大文字と小文字が区別されない場合、これは望ましい動作ではありません。 生成されたクエリを変更するには、 CaseInsensitive コネクタ オプションを使用します。
let
Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [CaseInsensitive=true]),
#"Filtered Rows" = Table.SelectRows(Source, each [State] == "aLaBama")
in
#"Filtered Rows"
クエリ パラメーターの使用
クエリ パラメーターを使用して、クエリを動的に変更できます。
クエリ ステップでクエリ パラメーターを使用する
クエリ パラメーターは、それをサポートする任意のクエリ ステップで使用できます。 たとえば、パラメーターの値に基づいて結果をフィルター処理します。 この例では、Power Query エディターの [State] 列の右側にあるドロップダウン メニューを選択し、[テキスト フィルター>][Equals] を選択し、[State に一致する行を保持] で [ALABAMA] を選択します。
Azure Data Explorer 関数にパラメーターを指定する
Kusto 関数は、複雑な Kusto クエリ言語 (KQL) クエリを維持するための優れた方法です。 Power Query に KQL を埋め込む代わりに関数を使用することをお勧めします。 関数を使用する主な利点は、作成とテストが簡単な環境でロジックが 1 回維持される点です。
関数はパラメーターを受け取ることもできます。そのため、Power BI ユーザーに多くの柔軟性が追加されます。 Power BI には、データをスライスする多くの方法があります。 ただし、すべてのフィルターとスライサーは元の KQL の後に追加され、多くの場合、クエリの初期段階でフィルター処理を使用する必要があります。 関数と動的パラメーターを使用することは、最終的なクエリをカスタマイズする非常に効果的な方法です。
関数の作成
無料のクラスターを含め、アクセスできる任意の Azure Data Explorer クラスターで次の関数を作成できます。 この関数は、ヘルプ クラスターから SalesTable テーブルを返します。このテーブルは、レポート ユーザーが指定した数値より大きいか小さい販売トランザクションに対してフィルター処理されます。
.create-or-alter function LargeOrSmallSales(Cutoff:long,Op:string=">")
{
cluster("help").database("ContosoSales").SalesTable
| where (Op==">" and SalesAmount >= Cutoff) or (Op=="<" and SalesAmount <= Cutoff)
}
関数を作成したら、次を使用してテストできます。
LargeOrSmallSales(2000,">")
| summarize Sales=tolong(sum(SalesAmount)) by Country
次を使用してテストすることもできます。
LargeOrSmallSales(20,"<")
| summarize Sales=tolong(sum(SalesAmount)) by Country
Power BI での関数の使用
関数を作成したクラスターに接続します。
Power Query ナビゲーターで、オブジェクトの一覧から関数を選択します。 コネクタはパラメーターを分析し、ナビゲーターの右側にあるデータの上に表示します。
パラメーターに値を追加し、[ 適用] を選択します。
プレビューが表示されたら、[ データの変換] を選択します。
Power Query エディターで、カットオフ値用と演算子用の 2 つのパラメーターを作成します。
LargeOrSmallSalesクエリに戻り、値を数式バーのクエリ パラメーターに置き換えます。
エディターから 2 つの静的テーブル (データの入力) を作成し、2 つのパラメーターのオプションを指定します。 カットオフでは、10、50、100、200、500、1000、2000 などの値を持つテーブルを作成できます。
Opの場合、2 つのテキスト値が<および>されたテーブル。テーブル内の 2 つの列は、パラメーターにバインドする 選択を使用してクエリ パラメーターにバインドする必要があります。
最後のレポートには、2 つの静的テーブルのスライサーと、サマリー売上のビジュアルが含まれます。
ベース テーブルは最初にフィルター処理され、次に集計されます。
接続の詳細でのクエリ パラメーターの使用
クエリ パラメーターを使用して、クエリ内の情報をフィルター処理し、クエリのパフォーマンスを最適化します。
詳細エディターで次の手順を実行します。
クエリの次のセクションを見つけます。
Source = AzureDataExplorer.Contents("<Cluster>", "<Database>", "<Query>", [])
例えば次が挙げられます。
Source = AzureDataExplorer.Contents("Help", "Samples", "StormEvents | where State == 'ALABAMA' | take 100", [])Kusto クエリ言語 (KQL) クエリにクエリ パラメーターを挿入します。
接続ダイアログに KQL クエリを直接貼り付けると、クエリは Power Query のソース ステップの一部になります。 高度なエディターを使用するか、数式バーでソース ステートメントを編集するときに、クエリの一部としてパラメーターを埋め込むことができます。 例としてのクエリは
StormEvents | where State == ' " & State & " ' | take 100です。Stateはパラメーターであり、実行時にクエリは次のようになります。StormEvents | where State == 'ALABAMA' | take 100クエリに引用符が含まれている場合は、正しくエンコードします。 たとえば、KQL の次のクエリです。
"StormEvents | where State == "ALABAMA" | take 100"高度なエディター に 2 つの引用符が付いた状態で、次のように表示されることになります。
"StormEvents | where State == ""ALABAMA"" | take 100"Stateなどのパラメーターを使用している場合は、3 つの引用符を含む次のクエリに置き換える必要があります。"StormEvents | where State == """ & State & """ | take 100"
Azure Data Explorer の機能に Value.NativeQuery を使用する
Power Query でサポートされていない Azure Data Explorer 機能を使用するには、Power Query M の Value.NativeQuery メソッドを使用します。このメソッドは、生成されたクエリ内に Kusto クエリ言語フラグメントを挿入し、実行されるクエリをより詳細に制御するために使用することもできます。
次の例は、Azure Data Explorer で percentiles 関数を使用する方法を示しています。
let
StormEvents = AzureDataExplorer.Contents(DefaultCluster, DefaultDatabase){[Name = DefaultTable]}[Data],
Percentiles = Value.NativeQuery(StormEvents, "| summarize percentiles(DamageProperty, 50, 90, 95) by State")
in
Percentiles
Power BI データ更新スケジューラを使用して Kusto に制御コマンドを発行しない
Power BI には、データ ソースに対して定期的にクエリを発行できるデータ更新スケジューラが含まれています。 Power BI ではすべてのクエリが読み取り専用であると想定されているため、このメカニズムを使用して Kusto に制御コマンドをスケジュールしないでください。