Replacing/Removing Kusto 中动态值中给定键的值

Replacing/Removing value for a given key in a dynamic value in Kusto

Kusto 中是否有任何方法可以用来替换 Kusto 动态值中特定键的值?如果需要,是替换值还是删除整个键值对?

更新

假设我们在 table 中有以下动态值:-

   { 
      "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":1.33,
      "Num2":33.8,
      "City":"New York"
    }

现在我想删除键 Num1 的键值对,这样生成的输出将如下所示:-

   { 
      "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num2":33.8,
      "City":"New York"
    }

如果这不可能,即使下面的掩码也可以作为解决方案,通过掩码我的意思是每当键 Num1 出现在动态值中时,它将被分配一个固定值(在本例中为 0)行数:-

  { 
      "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":0,
      "Num2":33.8,
      "City":"New York"
    }

该值可以是任何字符串或数字,在此示例中我使用了数字,但这可以是任何内容。

更新:

let t = datatable(mystring:string)
[
'
{     "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":180,           
      "Num2":33.8,
      "City":"New York"
}
'
];
t
| project myjson = parse_json(mystring)
| project Num2=tostring(myjson.Num2), City=tostring(myjson.City), SectionA=tostring(myjson.SectionA)
| extend newColumn=strcat("\"City\":","\"",City,"\", \"Num2\":","", Num2,", \"SectionA\":","", SectionA) 

结果:


请尝试以下代码,看看是否可以解决问题:

let t = datatable(mystring:string)
[
'
{     "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":180,           
      "Num2":33.8,
      "City":"New York"
}
'
];
t
| project myjson = parse_json(mystring)
| project Num2=tostring(myjson.Num2), City=tostring(myjson.City), SectionA=tostring(myjson.SectionA)

结果:

使用新的 bag_merge 函数在 Kusto 动态字典 \ 包中设置值的另一种方法是使用新的 bag_merge 函数:

let t = dynamic({ 
      "SectionA":{ 
                 "Prop1":"abcd",
                 "Prop2":"efgh",
                 "Prop3":"ahd32",
                 "category":"main"
                 },
      "Num1":1.33,
      "Num2":33.8,
      "City":"New York"
    });

print bag_merge(dynamic({"Num1":0}), t)

bag_remove_keys() 函数从动态 属性-bag 中删除键和关联值。唯一的限制是不支持嵌套级别的键。

datatable(input:dynamic) [
    dynamic({ 
        "SectionA":{ 
                    "Prop1":"abcd",
                    "Prop2":"efgh",
                    "Prop3":"ahd32",
                    "category":"main"
                    },
        "Num1":1.33,
        "Num2":33.8,
        "City":"New York"
    }) ] | extend result=bag_remove_keys(input, dynamic(['Num1']))