你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
lookup 运算符
适用于:✅Microsoft Fabric✅Azure 数据资源管理器Azure Monitor✅Microsoft✅ Sentinel
使用在维度表中查找的值扩展事实数据表的列。
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
此处,结果是一个表,它根据后一个表中的每对 (CommonColumn1
,Col2
) 查找前一个表中的每对 (CommonColumn
,Col
),使用来自 DimensionTable
(通过 $right
进行引用)的数据来扩展 FactTable
($left
)。
有关事实数据表与维度表之间的差异,请参阅事实数据表与维度表。
lookup
运算符执行的操作类似于 join 运算符,但存在以下差异:
- 结果不会重复
$right
表中作为联接操作基础的列。 - 仅支持两种查找:
leftouter
和inner
,并且leftouter
为默认值。 - 从性能方面考虑,系统默认情况下假定
$left
表是较大的(事实数据)表,而$right
表是较小的(维度)表。 这与join
运算符使用的假设完全相反。 lookup
运算符自动将$right
表广播到$left
表(实质上,其行为与指定了hint.broadcast
时的行为相同)。 这会限制$right
表的大小。
注意
如果查找的右侧大于几十 MB,则查询将失败。
可以运行以下查询来估计右侧的大小(以字节为单位):
rightSide
| summarize sum(estimate_data_size(*))
语法
LeftTable |
lookup
[kind
=
(leftouter
|inner
)] (
RightTable)
on
Conditions
详细了解语法约定。
参数
客户 | 类型 | 必需 | 说明 |
---|---|---|---|
LeftTable | string |
✔️ | 用作查找基础的表或表格表达式。 表示为 $left 。 |
RightTable | string |
✔️ | 用于“填充”事实数据表中的新列的表或表格表达式。 表示为 $right 。 |
特性 | string |
✔️ | 一个或多个规则的逗号分隔列表,这些规则描述 LeftTable 中的行如何与 RightTable 中的行进行匹配。 将使用 and 逻辑运算符评估多个规则。 请参阅规则。 |
kind |
string |
确定如何处理 LeftTable 中在 RightTable 中没有匹配项的行。 默认情况下将使用 leftouter ,这意味着所有这些行都将出现在输出中,对于此运算符添加的 RightTable 列的缺失值,将使用 null 值。 如果使用 inner ,则输出中将省略此类行。 lookup 运算符不支持其他种类的联接。 |
规则
规则类型 | 语法 | Predicate |
---|---|---|
基于名称的等式 | ColumnName | where LeftTable.ColumnName == RightTable.ColumnName |
基于值的等式 | $left. LeftColumn == $right. RightColumn |
where $left. LeftColumn == $right. *RightColumn |
注意
如果使用“基于值的等式”,则列名称必须通过由 $left
和 $right
表示法表示的相应所有者表进行限定。
返回
具有以下内容的表:
- 一列,用于每个表中的每一列,包括匹配键。 如果存在名称冲突,会自动重命名右侧的列。
- 一行,用于输入表之间的所有匹配项。 匹配项是从表中选出的一行,该表中的所有
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 | Clinton | billc |
3 | Bill | Clinton | billc |
4 | Steve | Ballmer | steveb |
5 | Tim | Cook | timc |
相关内容
- 广播联接。