如何基于 Azure 数据资源管理器 KQL 中的其他列构建新的动态列

Mar*_* S. 3 kql azure-data-explorer

我有一个包含各种动态列的结果集,并且希望将这些动态列投影到一个新的动态列,其中这些列作为属性包含。

例子:

我的结果集由 2 个动态列组成

"MainSoftware": {
    "Version": "2.10",
    "BuildConfig": 3,
    "SettingsVersion": 1
},
"SecSoftware": {
    "ArticleNumber": "123",
    "Version": "1.0"
}
Run Code Online (Sandbox Code Playgroud)

我想创建以下列作为输出:

"Software": {
  "MainSoftware": {
    "Version": "2.10",
    "BuildConfig": 3,
    "SettingsVersion": 1
  },
  "SecSoftware": {
    "ArticleNumber": "123",
    "Version": "1.0"
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用 make_bag 但这只能用作聚合函数,并且在我的情况下我有一个平坦的结果集,其中我只需要根据已有的列构建一个计算动态列。

我还尝试使用这样的动态关键字创建列

| extend Software=dynamic({"MainSoftware": MainSoftware, "SecSoftware":SecSoftware})
Run Code Online (Sandbox Code Playgroud)

但这在语法上是不正确的,因为看起来我只能在表达式中使用常量值。

Mar*_* S. 5

我找到了解决问题的办法。

pack -function正是我所需要的。

| project Software=pack("MainSoftware", MainSoftware, "SecSoftware", SecSoftware)
Run Code Online (Sandbox Code Playgroud)