【问题标题】:Find max from first row to current row in Kusto (Timeseries)在 Kusto 中查找从第一行到当前行的最大值(时间序列)
【发布时间】:2021-12-27 18:40:39
【问题描述】:

我正在尝试找出如何扩展列以显示从第一行回溯到当前行的最大值(例如,从时间戳最早的行到最新的行循环遍历表)。

这是一个示例输入表:

let T = datatable(Timestamp:datetime, Count:int)
[
   datetime(2021-01-01), 1,
   datetime(2021-01-02), 1,
   datetime(2021-01-03), 2,
   datetime(2021-01-04), 1,
   datetime(2021-01-05), 1,
   datetime(2021-01-06), 3,
   datetime(2021-01-07), 1,
   datetime(2021-01-08), 2,
];

想要的输出是:

Timestamp Count MaxToDate
2021-01-01 1 1
2021-01-02 1 1
2021-01-03 2 2
2021-01-04 1 2
2021-01-05 1 2
2021-01-06 3 3
2021-01-07 1 3
2021-01-08 2 3

谢谢!

【问题讨论】:

    标签: azure-data-explorer kql kusto-explorer


    【解决方案1】:

    您可以使用scan 运算符:https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/scan-operator

    例如:

    datatable(Timestamp:datetime, Count:int)
    [
       datetime(2021-01-01), 1,
       datetime(2021-01-02), 1,
       datetime(2021-01-03), 2,
       datetime(2021-01-04), 1,
       datetime(2021-01-05), 1,
       datetime(2021-01-06), 3,
       datetime(2021-01-07), 1,
       datetime(2021-01-08), 2,
    ]
    | order by Timestamp asc
    | scan declare (max_to_date:int = 0) with 
    (
        step s1: true => max_to_date = case(Count > s1.max_to_date,
                                            Count,
                                            s1.max_to_date);
    )
    
    Timestamp Count max_to_date
    2021-01-01 00:00:00.0000000 1 1
    2021-01-02 00:00:00.0000000 1 1
    2021-01-03 00:00:00.0000000 2 2
    2021-01-04 00:00:00.0000000 1 2
    2021-01-05 00:00:00.0000000 1 2
    2021-01-06 00:00:00.0000000 3 3
    2021-01-07 00:00:00.0000000 1 3
    2021-01-08 00:00:00.0000000 2 3

    【讨论】:

    • 非常好,正是我想要的。谢谢你,约尼!一旦我获得了最低声望,我就会投赞成票。
    • 安德鲁 - 你应该把它标记为答案,我相信你可以做到以目前的声誉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多