Azure Data Explorer (Kusto) and KQL Database

總結

Property Value
連接器 Azure Data Explorer (Kusto) 圖示 Azure Data Explorer (Kusto)
KQL 資料庫圖示 KQL 資料庫
Products Azure Data Explorer (Kusto): Excel
Power BI(語意模型)
Power Query Online
KQL 資料庫:Power BI(語意模型)
Power Query Online
發行狀態 預覽(KQL Database)與正式推出(Azure Data Explorer(Kusto))
類別 Azure 與 Fabric
驗證類型 Microsoft Entra ID
資料來源類型 AzureDataExplorer
函數參考文檔 AzureDataExplorer.Contents
AzureDataExplorer.Databases
AzureDataExplorer.KqlDatabase

備註

某些功能可能會存在於一個產品中,但由於部署排程和主機特定功能,而不存在於其他產品中。

先決條件

Azure 資料總管 (Kusto)

KQL 資料庫

你必須擁有 KQL 資料庫的讀取權限。

支援的功能

  • Import
  • DirectQuery (Power BI 語意模型)
  • 進階選項
    • 限制查詢結果記錄數
    • 限制查詢結果資料大小 (以位元組為單位)
    • 停用結果集截斷
    • 其他集合陳述式

Parameters

Azure 資料總管 (Kusto)

進入點:AzureDataExplorer.Contents

所需參數數量: 1

從 Azure Data Explorer(Kusto)匯入資料

從您的 Azure Data Explorer (Kusto) 執行個體匯入資料

Parameter 顯示名稱 Required 類型 Group 範例值 可空值 其他中繼資料
叢集 Cluster Yes 收發簡訊 “;https://mycluster.kusto.windows.net" false
資料庫 Database No 可為空的文字 「MyDatabase」 true
tableOrQuery 資料表名稱或 Azure Data Explorer 查詢 No 可為空的文字 「日誌 | where [Timestamp] > ago(1h)」;「追蹤表」 true {"Formatting.IsCode": true, "Formatting.IsMultiLine": true}
options 進階選項 No 可以為空的記錄 進階選項 true

欄位於 options

Field 顯示名稱 Required 類型 Group 範例值 可空值 Optional
options.MaxRows 限制查詢結果記錄數 No number 進階選項 "500000" false true
options.MaxSize 限制查詢結果資料大小 (以位元組為單位) No number 進階選項 "67108864" false true
options.NoTruncate 停用結果集截斷 No 合乎邏輯 進階選項 "錯誤" false true
options.AdditionalSetStatements 附加集合語句(以分號分隔) No 收發簡訊 進階選項 「set query_datascope=hotcache;」 false true

KQL 資料庫

進入點:AzureDataExplorer.KqlDatabase

所需參數數: 0

以發現模式從 Fabric Kusto 叢集匯入資料。

從你的 KQL 資料庫實例匯入資料

Parameter 顯示名稱 Required 類型 Group 範例值 可空值 其他中繼資料
叢集 Cluster No 可為空的文字 “;https://mycluster.kusto.windows.net" true
資料庫 Database No 可為空的文字 「MyDatabase」 true
tableOrQuery 資料表名稱或 Azure Data Explorer 查詢 No 可為空的文字 「日誌 | where [Timestamp] > ago(1h)」;「追蹤表」 true {"Formatting.IsCode": true, "Formatting.IsMultiLine": true}
options 進階選項 No 可以為空的記錄 進階選項 true

欄位於 options

Field 顯示名稱 Required 類型 Group 範例值 可空值 Optional
options.MaxRows 限制查詢結果記錄數 No number 進階選項 "500000" false true
options.MaxSize 限制查詢結果資料大小 (以位元組為單位) No number 進階選項 "67108864" false true
options.NoTruncate 停用結果集截斷 No 合乎邏輯 進階選項 "錯誤" false true
options.AdditionalSetStatements 附加集合語句(以分號分隔) No 收發簡訊 進階選項 「set query_datascope=hotcache;」 false true

從 Power Query Desktop 連線

Azure 資料總管 (Kusto)

若要從 Power Query Desktop 連線到 Azure 資料總管:

  1. 在取得資料功能中選取 Azure Data Explorer (Kusto)。 Power Query Desktop 中的數據體驗會因應用程式而異。 如需有關您的應用程式在 Power Query Desktop 上取得資料功能的詳細資訊,請移至 何處取得資料。

  2. 在 Azure 資料總管 (Kusto) 中,提供 Azure 資料總管叢集的名稱。 在此範例中,請使用 https://help.kusto.windows.net 來存取範例用的說明叢集。 對於其他叢集,URL 的格式為 https:// <ClusterName>。<區域>.kusto.windows.net。

    您也可以選擇您要連線的叢集上所託管的資料庫,以及資料庫中的某一資料表,或執行查詢,例如 StormEvents | take 1000。

  3. 如果您想要使用任何進階選項,請選取該選項,然後輸入要與該選項搭配使用的資料。 其他資訊:使用進階選項連線

    備註

    您可能需要向下捲動,以顯示所有進階選項和資料連線選項。

  4. 選取 匯入 或 DirectQuery 數據連線模式(僅限 Power BI Desktop)。 更多資訊: 何時使用 Import 或 DirectQuery 模式

  5. 選取確定以繼續。

    Azure 資料總管(Kusto)對話方塊的螢幕截圖,輸入了叢集的 URL。

  6. 如果您尚未連線到叢集,請選取 [登入]。 使用組織帳戶登入,然後選取 [連線]。

    Azure 資料總管登入對話方塊的螢幕擷取畫面,其中組織帳戶已準備好登入。

  7. 在 Navigator中,選取您想要的資料庫資訊,然後選取 載入 以載入資料,或 轉換資料 繼續在 Power Query 編輯器中轉換資料。 在此範例中,已在 [範例] 資料庫中選取 StormEvents。

    開啟的「導覽器」螢幕擷取畫面,其中包含範例資料庫中 StormEvents 的資料。

KQL 資料庫

要從 Power Query Desktop 連接 KQL 資料庫:

  1. 在 取得資料中,選擇 Microsoft Fabric(預覽版), 或搜尋 KQL,選擇 KQL 資料庫,然後選擇 連接。 其他資訊: 從何處取得資料

    取得資料頁面的截圖,選取了 Microsoft Fabric(預覽)類別,並強調了 KQL 桌面(預覽)。

  2. 在 KQL 資料庫中,填寫叢集及任何可選欄位,如 資料庫。

    Kusto 頁面的截圖,顯示叢集和可選欄位已準備好填寫。

    要取得叢集 URI,請在 Fabric 服務中進入你的 KQL 資料庫並複製查詢 URI。

    KQL 資料庫首頁的截圖,強調了查詢 URI 複製選項。

    然後選擇確定。

  3. 如果這次嘗試是你第一次連接這個網站,請選擇 登入 並輸入你的帳號。 然後選取 [Connect]。

    KQL 資料庫登入對話框的截圖,組織帳號已準備好登入。

  4. 在 Navigator 裡,選擇你需要的資料表,然後載入或轉換資料。

    Power Query 導航器的截圖,已選取風暴事件表。

從 Power Query Online 連線

Azure 資料總管 (Kusto)

若要從 Power Query Online 連線到 Azure 資料總管:

  1. 在取得資料體驗中選取 [Azure 資料總管 (Kusto)] 選項。 不同的應用程式透過不同的方式來體驗 Power Query Online 的資料取得功能。 如需有關如何從您的應用程式進入 Power Query Online 資料獲取體驗的詳細資訊,請移至 何處取得資料。

    取得資料視窗的螢幕擷取畫面,其中強調 Azure 資料總管。

  2. 在 [ 連線到資料來源] 中,提供 Azure 資料總管叢集的名稱。 在此範例中,請使用 https://help.kusto.windows.net 來存取範例用的說明叢集。 對於其他叢集,URL 的格式為 https:// <ClusterName>。<區域>.kusto.windows.net。

    您也可以選擇您要連線的叢集上所託管的資料庫,以及資料庫中的某一資料表,或執行查詢,例如 StormEvents | take 1000。

    Azure 資料總管 (Kusto) 的 [選擇資料來源] 頁面的螢幕擷取畫面,並輸入叢集的 URL。

  3. 如果您想要使用任何進階選項,請選取該選項,然後輸入要與該選項搭配使用的資料。 其他資訊:使用進階選項連線

  4. 如有需要,請在 數據網關中選取內部部署數據閘道。

  5. 如果您尚未連線到叢集,請選取 [登入]。 使用組織帳戶登入。

  6. 成功登入之後,請選取 [ 下一步]。

  7. 在 [ 選擇資料 ] 頁面中,選取您想要的資料庫資訊,然後選取 [轉換資料 ] 或 [ 下一步 ] 以繼續在 Power Query 編輯器中轉換資料。 在此範例中,已在 [範例] 資料庫中選取 StormEvents。

    [選擇資料] 頁面的螢幕擷取畫面,其中包含範例資料庫中 StormEvents 的資料。

KQL 資料庫

要從 Power Query Online 連接 KQL 資料庫:

  1. 在 選擇資料來源中搜尋 KQL,然後選擇 KQL 資料庫。 其他資訊: 從何處取得資料

  2. 在 「連接資料來源」中,填寫叢集及任何可選欄位,如 資料庫。

    連接資料來源頁面的截圖,連線設定準備好填寫。

    要取得叢集 URI,請在 Fabric 服務中進入你的 KQL 資料庫並複製查詢 URI。

    MyKQLDatabase KQL 資料庫首頁的截圖,並強調了查詢副本 URI 選項。

  3. 如有必要,如果您要使用內部部署數據,請輸入內部部署數據閘道。 例如,如果你要將資料流和本地 SQL Server 資料庫的資料結合起來。

  4. 登入您的組織帳戶。

  5. 成功登入後,選擇 下一步。

  6. 在 「選擇資料」中,選擇你需要的資料,然後選擇 「轉換資料」。

    選擇資料頁面的截圖,已選取風暴事件。

其他資訊

進階選項

Power Query Desktop 和 Power Query Online 都提供一組進階選項,您可以視需要新增至查詢。

下表列出您可以在Power Query Desktop和Power Query Online 中設定的所有進階選項。

進階選項 Description
限制查詢結果記錄數 在結果中要傳回的記錄數目上限。
限制查詢結果資料大小 (以位元組為單位) 要在結果中傳回的資料大小上限 (以位元組為單位)。
停用結果集截斷 使用 notruncation 要求選項啟用或停用結果截斷。
其他集合陳述式 設定查詢期間的查詢選項。 查詢選項可控制查詢的執行方式和傳回結果。 多個 Set 陳述式可以用分號分隔。

如需 Power Query UI 中無法使用之其他進階選項的相關資訊,請移至 在 M 查詢中設定 Azure 資料總管連接器選項。

何時使用 Import 或 DirectQuery 模式

在匯入模式中,資料會移至 Power BI。 在 DirectQuery 模式中,資料會直接從叢集查詢。

在下列情況下使用匯入模式:

  • 您的資料集很小。
  • 您不需要近乎即時的資料。
  • 您的數據已匯總,或您在 Kusto 中執行彙總。

在下列情況下使用 DirectQuery 模式:

  • 您的資料集非常大。
  • 您需要近乎即時的資料。

若要深入瞭解如何使用 DirectQuery,請移至 關於在 Power BI 中使用 DirectQuery。

查詢資料的技巧

下列各節包含搭配 Power Query 使用 Kusto 查詢語言的秘訣和訣竅。

Power BI 中的複雜查詢

複雜的查詢在 Kusto 中比在 Power Query 中更容易表示。 它們應該實作為 Kusto 函式,並在 Power BI 中叫用。 在 Kusto 查詢中使用 DirectQuery 搭配 let 語句時,需要這個方法。 由於 Power BI 會結合兩個查詢,而且 let 陳述式不能與 join 運算子一起使用,因此可能會發生語法錯誤。 因此,請將聯結的每個部分儲存為 Kusto 函式,並允許 Power BI 將這兩個函式聯結在一起。

如何模擬相對日期時間運算子

Power Query 不包含 相對 日期時間運算子,例如 ago()。 若要模擬 ago(),請使用 DateTime.FixedLocalNow 和 #duration Power Query M 函式的組合。

而不是使用 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 資料總管連接器選項

您可以從 Power Query 進階編輯器以 M 查詢語言設定 Azure 資料總管連接器的選項。 使用這些選項,您可以控制傳送至 Azure 資料總管叢集的產生查詢。

let
    Source = AzureDataExplorer.Contents("help", "Samples", "StormEvents", [<options>])
in
    Source

您可以在 M 查詢中使用下列任何選項:

Option 範例 Description
最大列數 [MaxRows=300000] 將設定陳述式新增至您的查詢 truncationmaxrecords。 覆寫查詢可以傳回給呼叫端的預設記錄數目上限 (截斷)。
最大尺寸 [MaxSize=4194304] 將設定陳述式新增至您的查詢 truncationmaxsize。 覆寫允許查詢傳回給呼叫端的預設資料大小上限 (截斷)。
不截斷 [NoTruncate=true] 將設定陳述式新增至您的查詢 notruncation。 啟用禁止截斷傳回給呼叫端的查詢結果。
AdditionalSet陳述式 [AdditionalSetStatements="set query_datascope=hotcache"] 將提供的 set 陳述式新增到您的查詢中。 這些陳述式可用來設定查詢持續時間的查詢選項。 查詢選項可控制查詢的執行方式和傳回結果。
不區分大小寫 [CaseInsensitive=true] 讓連接器產生不區分大小寫的查詢,查詢在比較值時會使用 =~ 運算子,而不是 == 運算子。
強制使用包含 [ForceUseContains=true] 讓連接器產生查詢,在使用文字欄位時使用 contains ,而不是預設 has 值。 雖然 has 效能更高,但它不處理子字串。 如需兩個運算子之間差異的詳細資訊,請移至 字串運算子。
暫停 [Timeout=#duration(0,10,0,0)] 將查詢的用戶端和伺服器的逾時時間都設定為指定的持續時間。
用戶請求識別碼前綴 (ClientRequestIdPrefix) [ClientRequestIdPrefix="MyReport"] 設定一個 ClientRequestId 前綴詞,以供連接器傳送的所有查詢使用。 這可讓查詢在叢集中識別為來自特定報表和/或資料來源。

備註

您可以將多個選項組合在一起,以達到所需的行為: [NoTruncate=true, CaseInsensitive=true]

達到 Kusto 查詢限制

根據預設,Kusto 查詢最多會傳回 500,000 個資料列或 64 MB,如 查詢限制中所述。 您可以使用 Azure 資料總管 (Kusto) 連線視窗中的進階選項來覆寫這些預設值:

Azure 資料總管 (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的下拉式功能表,選取 文字篩選條件>等於,然後在保留資料列滿足 'State' 條件下選取 ALABAMA。

篩選資料列對話方塊的螢幕擷取畫面,您可以在其中使用參數設定篩選結果。

提供參數給 Azure 資料總管函式

Kusto 函式是維護複雜 Kusto 查詢語言 (KQL) 查詢的絕佳方式。 建議您使用函式,而不是將 KQL 內嵌在 Power Query 中。 使用函數的主要優勢是邏輯可以在一個便於創建和測試的環境中僅需維護一次。

函式也可以接收參數,因此為 Power BI 使用者增加許多彈性。 Power BI 有很多方法可以切片數據。 但所有篩選器和切片器都會被添加到原始 KQL 之後,在許多情況下,您會想要在查詢的早期階段應用篩選。 使用函數和動態參數是自訂最終查詢的非常有效的方法。

建立函數

您可以在您有權存取的任何 Azure 資料總管叢集中建立下列函式,包括免費叢集。 此函式會從說明叢集傳回資料表 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 中使用函式
  1. 連線到您建立函數的叢集。

  2. 在 Power Query 導覽器中,從物件清單中選取函式。 連接器會分析參數,並將其顯示在導航器右側的資料上方。

    在導航器數據上方顯示有截止和操作參數的螢幕截圖。

  3. 將值新增至參數,然後選取 [套用]。

  4. 預覽出現之後,選取 轉換資料。

  5. 進入 Power Query 編輯器後,建立兩個參數,一個用於截止值,另一個用於運算子。

  6. 返回 LargeOrSmallSales 查詢,並將值取代為編輯列中的查詢參數。

    使用 LargeOrSmallSales 函數的螢幕擷取畫面,並強調公式欄中的 Cutoff_Param 和 Op_Param 參數。

  7. 從編輯器中,建立兩個靜態表格 (輸入資料) ,以提供兩個參數的選項。 對於截止值,您可以建立具有 10、50、100、200、500、1000、2000 等值的表格。 對於 Op,一個包含兩個 Text 值 < 和 > 的表格。

  8. 資料表中的兩個資料行必須使用 繫結至參數 選取項來繫結至查詢參數。

    Op 綁定到 Op_Param 參數的屏幕截圖。

最終報表包含兩個靜態表格的過濾器,以及摘要銷售報表中的任何視覺效果。

Power BI 中的螢幕擷取畫面,顯示 [截止] 和 [操作] 值選項在資料表旁邊。

基底表格會先篩選,然後匯總。

在連線詳細資料中使用查詢參數

使用查詢參數來篩選查詢中的資訊,並最佳化查詢效能。

在 進階編輯器中:

  1. 尋找查詢的下列區段:

    來源 = AzureDataExplorer.Contents(“<Cluster>”, “<Database>”, “<Query>”, [])

    例如:

    Source = AzureDataExplorer.Contents("Help", "Samples", "StormEvents | where State == 'ALABAMA' | take 100", [])
    
  2. 在 Kusto 查詢語言(KQL)中插入查詢參數。

    如果您直接在連線對話方塊中貼上 KQL 查詢,則查詢會成為 Power Query 中來源步驟的一部分。 您可以使用進階編輯器,或在編輯列中的來源陳述式時,將參數內嵌為查詢的一部分。 範例查詢可以是 StormEvents | where State == ' " & State & " ' | take 100。 State 是一個參數,在運行時間中查詢將是:

    StormEvents | where State == 'ALABAMA' | take 100

  3. 如果您的查詢包含引號,請正確編碼它們。 例如,KQL 中的下列查詢:

    "StormEvents | where State == "ALABAMA" | take 100"
    

    將顯示在 進階編輯器 中,如下所示,並帶有兩個引號:

     "StormEvents | where State == ""ALABAMA"" | take 100"
    

    如果您使用參數 (例如 State),則應將其取代為下列查詢,其中包含三個引號:

    "StormEvents | where State == """ & State & """ | take 100"
    

針對 Azure 資料總管功能使用 Value.NativeQuery

若要使用 Power Query 不支援的 Azure 資料總管功能,請使用 Power Query M 中的 Value.NativeQuery 方法。這個方法會在產生的查詢內插入 Kusto 查詢語言片段,也可用來讓您進一步控制已執行的查詢。

下列範例示範如何在 Azure 資料總管中使用函 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 包含資料重新整理排程器,可定期針對資料來源發出查詢。 此機制不應該用來將控制命令排程至 Kusto,因為 Power BI 假設所有查詢都是唯讀的。