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']))
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']))