You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否在KQL中基于动态列名列表批量解压数据?

解决方案

要实现按每行指定的列动态解压数据,可以利用Kusto的动态对象(dynamic bag)和mv-apply操作来处理,具体查询如下:

input_table
| extend row_bag = pack_all()  // 将当前行的所有列打包成一个动态键值对对象
| mv-apply cols_to_decompress = parse_json(compressed_properties) on (
    // 对每个需要解压的列,更新动态对象中的值为解压后结果
    extend row_bag = bag_set(row_bag, cols_to_decompress, gzip_base64_decompress(tostring(row_bag[cols_to_decompress])))
)
// 将处理后的动态对象重新展开为原始列结构
| evaluate bag_unpack(row_bag)
// 可选:保持原表列顺序
| project compressed_properties, foo, bar

代码说明

  • pack_all():把当前行所有列转为动态键值对对象,支持后续动态修改指定列的值。
  • mv-apply cols_to_decompress = parse_json(compressed_properties):将每行的压缩列名数组拆分为单个元素,逐个处理。
  • bag_set(...):在动态对象中,将指定列名对应的值替换为gzip_base64_decompress解压后的结果。
  • evaluate bag_unpack(row_bag):把修改后的动态对象还原为表的列结构。
  • project:可选步骤,用于指定输出列的顺序,和原表保持一致。

结果验证

针对你提供的输入表,执行上述查询后会得到预期输出:

compressed_propertiesfoobar
["foo", "bar"]"decompressedData1""decompressedData2"
["foo"]"decompressedData3""Not compressed"

内容的提问来源于stack exchange,提问作者Grog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 03:09:57