lookup 運算子
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
使用維度數據表中查閱的值,擴充事實數據表的數據行。
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
在這裡,結果是一個數據表,其會藉由在前一個數據表中執行每個配對 (,,) 的查閱,以從前一個數據表CommonColumn1
中的數據來擴充 $right
FactTable
$left
DimensionTable
(CommonColumn
,Col2
) 的數據。Col
如需事實和維度數據表之間的差異,請參閱 事實和維度數據表。
lookup
運算符會執行類似聯結運算子的作業,但有下列差異:
- 結果不會從
$right
屬於聯結作業基礎的數據表中重複數據行。 - 僅支援兩種查閱,
leftouter
且inner
為leftouter
預設值。 - 就效能而言,系統預設會
$left
假設數據表是較大的 (facts) 數據表,而$right
數據表是較小的 (dimensions) 數據表。 這與運算子所使用的join
假設完全相反。 - 運算子
lookup
會自動將$right
數據表廣播至$left
數據表(基本上,行為就像已指定一樣hint.broadcast
)。 這會限制數據表的大小$right
。
注意
如果查閱的右側大於數十個 MB,查詢將會失敗。
您可以執行下列查詢,以位元組為單位估計右側的大小:
rightSide
| summarize sum(estimate_data_size(*))
語法
LeftTable lookup
|
[kind
=
(inner
leftouter
|)] (
RightTable 條件)
on
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
LeftTable | string |
✔️ | 表格或表格式表示式,這是查閱的基礎。 表示為 $left 。 |
RightTable | string |
✔️ | 用來在事實數據表中「填入」新數據行的數據表或表格式表達式。 表示為 $right 。 |
屬性 | string |
✔️ | 一或多個規則的逗號分隔清單,描述 LeftTable 中的數據列如何與 RightTable 中的數據列相符。 使用 and 邏輯運算子評估多個規則。 請參閱 規則。 |
kind |
string |
決定如何在 RightTable 中處理沒有相符專案之 LeftTable 中的數據列。 根據預設,會使用 ,leftouter 這表示所有數據列都會出現在輸出中,其中包含 Null 值,用於運算符所新增 RightTable 資料行的遺漏值。 如果使用 inner ,則會從輸出中省略這類數據列。 運算子不支援 lookup 其他類型的聯結。 |
規則
規則種類 | 語法 | 述詞 |
---|---|---|
依名稱相等 | ColumnName | where LeftTable。ColumnName == RightTable。ColumnName |
依值相等 | $left. LeftColumn == $right. RightColumn |
where $left. LeftColumn == $right. *RightColumn |
注意
如果是「依值相等」,數據行名稱必須以 和 $right
表示法所$left
表示的適用擁有者數據表限定。
傳回
具有:
- 這兩個數據表中每個數據行的數據行,包括相符的索引鍵。 如果發生名稱衝突,右側的數據行會自動重新命名。
- 輸入數據表之間每個相符項目的數據列。 比對是從一個數據表選取的數據列,其值
on
與另一個數據表中的數據列相同。 - 屬性 (查閱索引鍵) 只會出現在輸出資料表中一次。
- 如果
kind
未指定 或kind=leftouter
,則除了內部相符專案之外,左邊的每個數據列都有一個數據列(和/或右邊),即使它沒有相符專案也一樣。 在此情況下,不相符的輸出儲存格會包含 Null。 - 如果
kind=inner
為 ,則輸出中有一個數據列,每個相符數據列的組合從左到右。
範例
let FactTable=datatable(Row:string,Personal:string,Family:string) [
"1", "Bill", "Gates",
"2", "Bill", "Clinton",
"3", "Bill", "Clinton",
"4", "Steve", "Ballmer",
"5", "Tim", "Cook"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
"Bill", "Gates", "billg",
"Bill", "Clinton", "billc",
"Steve", "Ballmer", "steveb",
"Tim", "Cook", "timc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
資料列 | 個人版 | 系列 | Alias |
---|---|---|---|
1 | Bill | Gates | billg |
2 | Bill | 克林頓 | billc |
3 | Bill | 克林頓 | billc |
4 | 史蒂夫 | 鮑爾默 | steveb |
5 | Tim | 煮 | timc |
相關內容
- 廣播聯結。