在 Kusto 中是否可能只有 return 列具有值?

Is it possible in Kusto to only return columns with values?

我有一个 Azure 数据资源管理器 table,其中包含源数据库中对象的 属性 字段的值。 table 有针对不同类型对象的行,因此并非所有列都适用于每种对象类型。

我想 运行 查询以显示对象的数据,但只投影填充了值的列,而不投影不适用的列。所以我在查询时不知道列名,因为它们是由仅包含对象名称而不是类型或架构的操作触发的。

这是一种实现此目的的方法(信用亚历克斯):

datatable(col1:string, col2: string , col3:int) 
[ 
 'aa', '', 5,
 'cc', 'dd', int(null)
]
| where col1=="aa"
| as T
| extend values = pack_all()
| mv-apply values on 
(
    mv-expand kind = array  values
    | where isnotempty(values[1])
    | summarize EmptyValuesRemoved = make_bag(pack(tostring(values[0]), values[1]))
)
| project EmptyValuesRemoved
| evaluate bag_unpack(EmptyValuesRemoved)

结果:

如果数据被提取为 json,您可以通过映射根对象(使用“$”表示法)将原始对象保存在它自己的列中,然后您只需要到 return 那一栏。

我用过 isnotempty: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/isnotemptyfunction 还有isnotnull.