如何查询在 Kusto 中同时具有空值和非空值的分组不同记录?

How to query for grouped distinct records that both have null and non-null values in Kusto?

我正在尝试创建一个查询,该查询 return 具有基于另一个非空(数据)列的不同(汽车)列的结果集。

在下面的示例中,如果在数据列中找到非空值,则 return 具有值的单个实例,如果没有,则 return 始终为空值保持第一列的清晰度。

let Car = datatable(car, data:string) 
[
    "mercedes", "fast",
    "mercedes", null,
    "tesla", null
    "toyota", "good",
    "sonata", null,
    "sonata", null,
    "sonata", "amazing" 
];

因此所需的输出将是:

"mercedes", "fast",
"tesla", null,
"toyota", "good",
"sonata", "amazing",

谢谢!

一个选项是使用 set_difference()make_set() 的组合:

  • make_set() 将创建一组 data 的所有唯一值(通过 car,聚合键)
  • dynamic([""])是一个空字符串数组
  • set_difference() 将产生前两个数组之间的差异 - 提供具有非空字符串(或空集)的集合
  • 最后,通过访问结果集的第一个元素(使用 [0]),您将获得第一个非空元素(如果集合为空,则为 null)
datatable(car:string, data:string) 
[
    "mercedes", "",
    "mercedes", "fast",
    "tesla", "",
    "toyota", "good",
    "sonata", "",
    "sonata", "",
    "sonata", "amazing" 
]
| summarize data = set_difference(make_set(data), dynamic([""]))[0] by car
car data
mercedes fast
tesla
toyota good
sonata amazing