共用方式為


lookup 運算符

使用維度數據表中查閱的值,擴充事實數據表的數據行。

FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2

在這裡,結果是一個數據表,其會藉由在前一個數據表中執行每個配對 (,,) 的查閱,以從前一個數據表CommonColumn1中的數據來擴充 $rightFactTable$leftDimensionTableCommonColumnCol2) 的數據。Col 如需事實和維度數據表之間的差異,請參閱 事實和維度數據表

lookup運算符會執行類似聯結運算子作業,但有下列差異:

  • 結果不會從 $right 屬於聯結作業基礎的數據表中重複數據行。
  • 僅支援兩種查閱, leftouterinnerleftouter 預設值。
  • 就效能而言,系統預設會 $left 假設數據表是較大的 (facts) 數據表,而 $right 數據表是較小的 (dimensions) 數據表。 這與運算子所使用的 join 假設完全相反。
  • 運算子 lookup 會自動將 $right 數據表廣播至 $left 數據表(基本上,行為就像已指定一樣 hint.broadcast )。 這會限制數據表的大小 $right

注意

如果查閱的右側大於數十個 MB,查詢將會失敗。

您可以執行下列查詢,以位元組為單位估計右側的大小:

rightSide
| summarize sum(estimate_data_size(*))

語法

LeftTable lookup | [kind =innerleftouter|)] (RightTable 條件) on

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
LeftTable string ✔️ 表格或表格式表示式,這是查閱的基礎。 表示為 $left
RightTable string ✔️ 用來在事實數據表中「填入」新數據行的數據表或表格式表達式。 表示為 $right
屬性 string ✔️ 一或多個規則的逗號分隔清單,描述 LeftTable 中的數據列如何與 RightTable 中的數據列相符。 使用 and 邏輯運算子評估多個規則。 請參閱 規則
kind string 決定如何在 RightTable 中處理沒有相符專案之 LeftTable 中的數據列。 根據預設,會使用 ,leftouter這表示所有數據列都會出現在輸出中,其中包含 Null 值,用於運算符所新增 RightTable 資料行的遺漏值。 如果使用 inner ,則會從輸出中省略這類數據列。 運算子不支援 lookup 其他類型的聯結。

規則

規則種類 語法 述詞
依名稱相等 ColumnName whereLeftTableColumnName == RightTableColumnName
依值相等 $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