我需要将一些数字数据直接转换为
dynamic
。考虑以下情况:
datatable(
id: int,
label: string,
value: real
)[
1, 'x', 1.0,
1, 'y', 1.1,
]
| extend bag = bag_pack(label, value)
| summarize make_bag(bag) by id
id | 袋_袋 |
---|---|
1 | {"x":1.0,"y":1.1} |
*请注意:如果您从 ADX Web UI 访问此内容,则会对存储的
值进行调整以进行显示。添加dynamic
| extend dynamic_to_json(bag_bag)
我知道
x
值始终是整数,我想在打包之前将其转换为整数。然而, iff()
函数要求两个表达式具有相同的显式类型。因此,以下表达式...
| extend bag = bag_pack(
label,
iff(
label == "x",
toint(value),
value
)
)
...失败...
调用 iff():@then 数据类型 (int) 必须与 @else 数据类型 (real) 匹配
...以及明显的解决方法...
| extend bag = bag_pack(
label,
iff(
label == "x",
todynamic(toint(value)),
todynamic(value)
)
)
...失败...
todynamic():参数 #1 应该是字符串表达式
todynamic()
是 parse_json()
的已弃用别名,而不是 tostring()
/toint()
/等函数组的一部分;并且不适合此目的。是否有另一种解决方法可以用来将我的数字直接转换为 dynamic
?
我知道
值始终是整数,我想在打包之前将其转换为整数。x
我已经在我的环境中重现了,以下是我的预期结果:
The KQL query which worked for me:
datatable(
id: int,
label1: string,
value: real
)[
2, 'x', 2.0,
2, 'y', 2.1,
]
| extend bag = bag_pack(
label1,
parse_json(
iff(
label1 == "x",
todynamic(tostring(toint(value))),
todynamic(tostring(value))
)
)
)
| summarize make_bag(bag) by id
Output: