【发布时间】:2021-07-16 17:25:54
【问题描述】:
我有这个查询几乎可以工作:
datatable (timestamp:datetime, value:dynamic)
[
datetime("2021-04-19"), "a",
datetime("2021-04-19"), "b",
datetime("2021-04-20"), 1,
datetime("2021-04-20"), 2,
datetime("2021-04-21"), "b",
datetime("2021-04-22"), 2,
datetime("2021-04-22"), 3,
]
| project timestamp, stringvalue=iif(gettype(value)=="string", tostring(value), ""), numericvalue=iif(gettype(value)=="long", toint(value), int(null))
| summarize any(stringvalue), avg(numericvalue) by bin(timestamp, 1d)
| project timestamp, value=iif(isnan(avg_numericvalue), any_stringvalue, avg_numericvalue)
如果 value 是 string 并且 value 的 numericvalue 是 long,这会将 value 字段中的值拆分为 stringvalue。然后它根据日级别汇总值,对于字符串值它只取任何值,对于数值是计算平均值。
在此之后,我想将值放回 value 字段。
我在想最后一行可能如下所示,但动态函数只需要文字
| project timestamp, value=iif(isnan(avg_numericvalue), dynamic(any_stringvalue), dynamic(avg_numericvalue))
如果我这样做,它实际上会起作用:
| project timestamp, value=iif(isnan(avg_numericvalue), parse_json(any_stringvalue), parse_json(tostring(avg_numericvalue)))
但是有没有比将其转换为 json 并返回更好的方法?
【问题讨论】: