首页 > 解决方案 > 我们可以让 pack_all 只考虑非空和非空列吗

问题描述

pack_all()函数在制作动态对象时考虑所有输入列。是否有可能以某种方式强制它只考虑非空和非空列?如果没有,是否有任何解决方法可以在生成的动态值之上应用过滤器?

标签: azure-data-explorerkql

解决方案


没有任何味道pack_all可以做到这一点,但作为替代方案,您可以结合mv-applymv-expand运算符来实现这一点。这是一个示例(改编自文档):

datatable(SourceNumber:string,TargetNumber:string,CharsCount:long)
[
'555-555-1234','555-555-1212',46,
'555-555-1234','555-555-1213',50,
'555-555-1212','',int(null)
]
| extend values =pack_all()
| mv-apply removeProperties = values on 
(
    mv-expand kind = array  values
    | where isempty(values[1])
    | summarize propsToRemove = make_set(values[0])
)
| extend values = bag_remove_keys(values, propsToRemove)
| project-away propsToRemove 

推荐阅读