0

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

在下面的示例中,如果在数据列中找到非空值,则返回具有值的单个实例,如果没有,则返回具有空值的值并始终保持第一列的独特性。

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",

谢谢!

4

1 回答 1

2

一种选择是使用set_difference()and的组合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
数据
奔驰 快速地
特斯拉
丰田 好的
奏鸣曲 惊人
于 2021-09-30T01:11:40.793 回答