在 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.
我有一个 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.