Kusto时间序列过滤器

时间:2020-06-06 18:57:55

标签: kusto

我正在尝试为以下数据编写基于时间序列的过滤器。

S.No  Name.       Version.     Time
 1.  Dashboard   20            Apr-01
 2.  Search      20            Apr-02
 3.  Dashboard   21            May-01
 4.  Search      20            May-02
 5.  Search      21            May-03
 6.  Dashboard   22            Jun-01
 7.  Search      20            Jun-02
 8.  Search      22            Jun 02
 9.  Dashboard   23            Jun-05
 10. Search      21            Jun-06
 11. Search      20            Jun-06

正在寻找的过滤器是两步过滤器。

步骤1-(子集): 捕获某个版本的仪表板的首次出现时间。考虑这些是我们的发布日期。我们需要查找发布新版本后发生的旧版本搜索事件的计数。这里的版本号可能不是顺序的。

  Name.       Version.     Time
  Dashboard   20            Apr-01
  Dashboard   21            May-01
  Dashboard   22            Jun-01
  Dashboard   23            Jun-05

必需的实际输出:版本20的搜索条目的数量,该发布发生在版本21(示例中为5月1日)之后,等等...(版本22的发布之后的版本21的搜索条目)。 ..)

  Outliers        Version       Count
  Search          20             3           //4, 7, 11th rows
  Search          21             1           //10th row
  Search          22             0           //Should be avoided in the output if possible.

在SQL中,我们通常编写ctes来实现此结果集。 kusto和dunno的新手,如何编写子查询或临时查询。

有人可以在这里帮助我吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

av_free(frame);
av_freep(frame);

->

datatable(series:int, Name:string, Version:long, Time:datetime)
[
    1,  'Dashboard', 20, datetime(2020-04-01),
    2,  'Search',    20, datetime(2020-04-02),
    3,  'Dashboard', 21, datetime(2020-05-01),
    4,  'Search',    20, datetime(2020-05-02),
    5,  'Search',    21, datetime(2020-05-03),
    6,  'Dashboard', 22, datetime(2020-06-01),
    7,  'Search',    20, datetime(2020-06-02),
    8,  'Search',    22, datetime(2020-06-02),
    9,  'Dashboard', 23, datetime(2020-06-05),
    10, 'Search',    21, datetime(2020-06-06),
    11, 'Search',    20, datetime(2020-06-06),
]
| as T
| where Name == "Dashboard"
| summarize min(Time) by Version = Version - 1, Name
| join kind=leftouter(
    T
    | where Name != "Dashboard"
    | extend Version = Version
) on Version
| where Time > min_Time
| summarize count(), series = strcat_array(make_set(series), ", ") by Outlier = Name1, Version

感谢Yoni。 修改为prev而非版本-1。

| Outlier | Version | count_ | series   |
|---------|---------|--------|----------|
| Search  | 20      | 3      | 4, 7, 11 |
| Search  | 21      | 1      | 10       |