如何在KQL中实现当table2为空时跳过关联直接返回table1
解决方案
你可以利用Kusto的iff()函数结合标量判断来实现这个逻辑,具体代码如下:
let table1 = datatable (col1: int, col2: string) [ 1, "A", 2, "B", 3, "C" ]; let table2 = datatable (col1: int, col3: string) [ 1, "X", 2, "Y" // 若table2为空,注释掉上面两行 ]; let isTable2Empty = toscalar(table2 | count | project isempty = Count == 0); iff(isTable2Empty, table1, table1 | join kind=inner table2 on col1)
逻辑说明
- 判断表是否为空:通过
toscalar()获取table2的行数,判断是否等于0,得到布尔值isTable2Empty - 条件分支执行:
- 当
isTable2Empty为true(table2为空)时,直接返回table1的全部数据 - 当
isTable2Empty为false(table2非空)时,执行inner join关联操作,返回关联后的结果
- 当
验证结果
- 当table2非空时,返回关联后的结果:
| col1 | col2 | col11 | col3 |
|---|---|---|---|
| 1 | A | 1 | X |
| 2 | B | 2 | Y |
- 当table2为空时,返回完整的table1:
| col1 | col2 |
|---|---|
| 1 | A |
| 2 | B |
| 3 | C |
内容的提问来源于stack exchange,提问作者nrofis
相关产品推荐
相关产品推荐

