如何在Kusto Query中匹配两表UserId并扩展表1字段
在Kusto中实现类似Excel VLOOKUP的表关联操作
要实现你需要的表字段匹配扩展,Kusto里主要用join运算符或lookup函数,以下是两种具体实现方式:
方法1:使用join运算符
join是Kusto中关联表的核心运算符,支持多种关联类型,比如leftouter(对应Excel VLOOKUP的左匹配,找不到匹配项时补充字段为null)、inner(只保留两边都有匹配的行)。
假设你的表1名为Table1,表2名为Table2,关联字段是Table1.UserId_s和Table2.Id_s,示例代码如下:
// 构造示例表2数据(替换为你的实际表名) let Table2 = datatable(Id_s:string, UserPrincipalName_s:string, Country_s:string) [ "5da0e439-54cb-4607-9ef5-0a1ace71e93e", "Max.Power@company.com", "South Africa", "755dbf3a-5f57-4d93-a245-e8c2ab0baa6e", "Me.Myselft@company.com", "United Kingdom" ]; // 构造示例表1数据(替换为你的实际表名) let Table1 = datatable(UserId_s:string, OtherColumn:string) [ "5da0e439-54cb-4607-9ef5-0a1ace71e93e", "Data1", "755dbf3a-5f57-4d93-a245-e8c2ab0baa6e", "Data2", "some-random-id", "Data3" ]; // 左关联:保留Table1所有行,匹配不到则补充字段为null Table1 | join kind=leftouter Table2 on $left.UserId_s == $right.Id_s // 移除重复的Id_s字段(可选,根据需要调整) | project-away Id_s
方法2:使用lookup函数
lookup函数更贴近Excel VLOOKUP的使用逻辑,专门用于从另一个表中查找并补充字段,默认是左匹配行为,语法更简洁:
// 构造示例表数据 let Table2 = datatable(Id_s:string, UserPrincipalName_s:string, Country_s:string) [ "5da0e439-54cb-4607-9ef5-0a1ace71e93e", "Max.Power@company.com", "South Africa", "755dbf3a-5f57-4d93-a245-e8c2ab0baa6e", "Me.Myselft@company.com", "United Kingdom" ]; let Table1 = datatable(UserId_s:string, OtherColumn:string) [ "5da0e439-54cb-4607-9ef5-0a1ace71e93e", "Data1", "755dbf3a-5f57-4d93-a245-e8c2ab0baa6e", "Data2", "some-random-id", "Data3" ]; // 直接查找匹配字段并补充 Table1 | lookup Table2 on UserId_s == Id_s
关键说明
- 如果需要只保留两边都匹配的行,把
join的kind=leftouter改成kind=inner即可; lookup函数默认是左匹配,若要限制只保留匹配行,可以加参数kind=inner:lookup kind=inner Table2 on UserId_s == Id_s;- 替换示例中的
Table1、Table2为你实际使用的表名即可。
内容的提问来源于stack exchange,提问作者Pardu
相关产品推荐
相关产品推荐

