共用方式為


Kusto 查詢語言 (KQL) 圖表語意概觀

Kusto 查詢語言 (KQL) 中的圖表語意可讓您將數據模型化和查詢為圖形。 圖形的結構包含連接它們的節點和邊緣。 節點和邊緣都可以有描述它們的屬性。

圖表適用於代表涉及多對多、階層式或網路關聯性的複雜動態數據,例如社交網路、建議系統、連線資產或知識圖表。 例如,下圖說明由四個節點和三個邊緣組成的社交網路。 每個節點都有其名稱的屬性,例如 Bob,而每個邊緣都有其類型的屬性,例如 reportsTo

以圖表顯示社交網路的圖表。

圖形會以不同於關係資料庫的方式儲存數據,這些資料庫會使用數據表和需要索引和聯結來連接相關數據。 在圖表中,每個節點都有其鄰近專案的直接指標(相鄰),因此不需要編製索引或聯結任何專案,讓您輕鬆且快速地周遊圖表。 圖形查詢可以使用圖表結構和意義來執行複雜且強大的作業,例如尋找路徑、模式、最短距離、社群或集中量值。

您可以使用 KQL 圖形語意來建立和查詢圖形,其具有簡單且直覺的語法,適用於現有的 KQL 功能。 您也可以混合圖形查詢與其他 KQL 功能,例如時間型、位置型和機器學習查詢,以執行更進階且功能強大的數據分析。 透過搭配圖形語意使用 KQL,您可以透過圖形的彈性和表達性來取得 KQL 查詢的速度和規模。

例如,您可以使用:

  • 以時間為基礎的查詢來分析一段時間內圖表的演進,例如網路結構或節點屬性如何變更
  • 地理空間查詢來分析節點和邊緣的空間分佈或鄰近性,例如位置或距離如何影響關聯性
  • 將各種演算法或模型套用至圖形數據的機器學習查詢,例如叢集、分類或異常偵測

如何運作?

Kusto 中圖表語意的每個查詢都需要建立新的圖形表示法。 您可以使用圖表運算符,將邊緣表格式表示式和選擇性節點轉換成數據的圖形表示。 建立圖形之後,您可以套用不同的作業來進一步增強或檢查圖形數據。

圖形語意延伸模組會使用記憶體內部圖形引擎,可在叢集記憶體中的數據上運作,讓圖表分析變得互動式且快速。 圖形表示的記憶體耗用量會受到節點和邊緣數目及其個別屬性的影響。 圖形引擎會使用支援節點和邊緣任意屬性的屬性圖形模型。 它也會與 KQL 的所有現有純量運算元整合,讓用戶能夠撰寫能使用 KQL 完整功能和功能的完整強大功能和複雜圖形查詢。

為何在 KQL 中使用圖表語意?

在 KQL 中使用圖形語意有幾個原因,例如下列範例:

  • KQL 不支援遞歸聯結,因此您必須明確定義您想要執行的周遊(請參閱 案例:朋友的朋友)。 您可以使用 make-graph 運算子 來定義可變長度的躍點,這在關聯距離或深度未固定時很有用。 例如,您可以使用此操作員來尋找圖形中連接的所有資源,或從交通網路中的來源連線到的所有位置。

  • 時間感知圖表是 KQL 中圖形語意的獨特功能,可讓使用者在一段時間內將圖形數據模型化為一系列圖形操作事件。 用戶可以檢查圖表隨時間變化的方式,例如圖形的網路結構或節點屬性如何變更,或圖形事件或異常狀況如何發生。 例如,使用者可以使用時間序列查詢來探索圖形數據中的趨勢、模式或極端值,例如網路密度、集中度或模組化隨時間變化的方式

  • KQL 查詢編輯器的 Intellisense 功能可協助使用者以查詢語言撰寫和執行查詢。 它提供語法醒目提示、自動完成、錯誤檢查和建議。 它也藉由提供圖形特定的關鍵詞、運算元、函式和範例,引導使用者完成圖形建立和查詢程式,以協助具有圖形語意延伸的使用者。

限制

以下是 KQL 中圖表語意功能的一些主要限制:

  • 您只能建立或查詢符合一個叢集節點記憶體的圖形。
  • 圖形數據不會保存或分散到叢集節點,而且會在查詢執行之後捨棄。

因此,在 KQL 中使用圖形語意功能時,您應該考慮建立和查詢大型或密集圖形的記憶體耗用量和效能影響。 可能的話,您應該使用篩選、投影和匯總來減少圖形大小和複雜度。