【问题标题】:Summarize dynamic values with Kusto query in Azure Data Explorer在 Azure 数据资源管理器中使用 Kusto 查询汇总动态值
【发布时间】: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 并返回更好的方法?

【问题讨论】:

    标签: azure-data-explorer kql


    【解决方案1】:

    iff 期望第二个和第三个参数的类型匹配。在您的情况下,一个是数字,另一个是字符串。要解决此问题,只需在数字周围添加tostring()

    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, tostring(avg_numericvalue))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      相关资源
      最近更新 更多