共用方式為


lookup 運算子

適用於:✅Microsoft網狀架構✅✅✅

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

例如,下列查詢會產生數據表,其會藉由執行查閱,以從 DimensionTable$right) 的數據來擴充 FactTable$left)。 查閱會比對 FactTable 中每個配對(CommonColumnCol1)與 DimensionTable中的每個配對(CommonColumnCol2)。 如需事實和維度數據表之間的差異,請參閱 事實和維度數據表

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

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

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

注意

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

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

rightSide
| summarize sum(estimate_data_size(*))

語法

LeftTable|lookup [kind=leftouter|inner)] (RightTable)on属性

深入瞭解 語法慣例

參數

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

規則

規則種類 語法 述詞
依名稱相等 ColumnName where LeftTableColumnName==RightTableColumnName
依值相等 $left. LeftColumn==$right.RightColumn where $left. LeftColumn==$right.*RightColumn

注意

如果是「依值相等」,數據行名稱$right者數據表限定。

傳回

具有:

  • 這兩個數據表中每個數據行的數據行,包括相符的索引鍵。 如果有名稱衝突,則會自動重新命名右側的數據行。
  • 輸入數據表之間每個相符項目的數據列。 比對是從一個數據表選取的數據列,其值 on 與另一個數據表中的數據列相同。
  • 屬性 (查閱索引鍵) 只會出現在輸出資料表中一次。
  • 如果 kind 未指定 或 kind=leftouter,則除了內部相符專案之外,左邊的每個數據列都有一個數據列(和/或右邊),即使它沒有相符專案也一樣。 在此情況下,不相符的輸出儲存格會包含 Null。
  • 如果 kind=inner為 ,則輸出中有一個數據列,每個相符數據列的組合從左到右。

範例

下列範例示範如何根據 PersonalFamily 數據行中的相符值,在 FactTableDimTable之間執行左外部聯結。

let FactTable=datatable(Row:string,Personal:string,Family:string) [
  "1", "Rowan",   "Murphy",
  "2", "Ellis",   "Turner",
  "3", "Ellis",   "Turner",
  "4", "Maya",  "Robinson",
  "5", "Quinn",    "Campbell"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
  "Rowan",  "Murphy",   "rowanm",
  "Ellis",  "Turner", "ellist",
  "Maya", "Robinson", "mayar",
  "Quinn",   "Campbell",    "quinnc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family

輸出

資料列 個人版 系列 Alias
1 洛恩 墨菲 rowanm
2 埃利斯 車工 ellist
3 埃利斯 車工 ellist
4 瑪雅 羅賓遜 mayar
5 奎因 坎貝爾 quinnc