左外联接

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

leftouter联接方式会返回左侧表的所有记录,以及右侧表中匹配的记录。

关系图显示了如何联接工作。

语法

LeftTable | join kind=leftouter [ Hints ] RightTable on Conditions

详细了解语法约定

参数

客户 类型​​ 必需 说明
LeftTable string ✔️ 要合并其行的左侧表或表格表达式(有时称为外部表)。 表示为 $left
提示 string 零个或多个(以空格分隔)以 Name = Value 形式表示的联接提示,用于控制行匹配操作和执行计划的行为。 有关详细信息,请参阅提示
RightTable string ✔️ 要合并其行的右侧表或表格表达式(有时称为内部表)。 表示为 $right
条件 string ✔️ 确定 LeftTable 中的行如何与 RightTable 中的行匹配。 如果要匹配的列在这两个表中具有相同的名称,请使用 ON ColumnName 语法。 否则,请使用 ON $left.LeftColumn == $right.RightColumn 语法。 若要指定多个条件,可以使用“and”关键字,也可以使用逗号分隔它们。 如果使用逗号,则将使用“and”逻辑运算符来计算条件。

提示

为获得最佳性能,如果某个表始终小于另一个表,则将其用作 join 的左侧。

提示

参数名称 说明
hint.remote autoleftlocalright 请参阅跨群集联接
hint.strategy=broadcast 指定在群集节点上共享查询负载的方式。 请参阅广播联接
hint.shufflekey=<key> shufflekey 查询使用键将数据分区,在群集节点上共享查询负载。 请参阅 shuffle 查询
hint.strategy=shuffle shuffle 策略查询会在群集节点上共享查询负载,其中的每个节点将处理一个数据分区。 请参阅 shuffle 查询

返回

架构:两个表中的所有列,包括匹配的键。
:左表中的所有记录,以及右表中匹配的行。

示例

表 X 和 Y 的左外部联接的结果始终包含左表 (X) 的所有记录,即使联接条件在右表 (Y) 中未找到任何匹配记录。

let X = datatable(Key:string, Value1:long)
[
    'a',1,
    'b',2,
    'b',3,
    'c',4
];
let Y = datatable(Key:string, Value2:long)
[
    'b',10,
    'c',20,
    'c',30,
    'd',40
];
X | join kind=leftouter Y on Key

输出

Value1 Key1 Value2
a 1
b 2 b 10
b 3 b 10
c 4 c 20
c 4 c 30