标签: kql

展平 Kusto 查询中的列表列表

我有一个 Kusto 查询,它返回一系列行,每行都包含一个分号分隔的列表。我已经能够将每一行的内容拆分为一个列表,但我无法展平该列表。不幸的是,我对使用 Kusto 还很陌生,所以我有点困难。

我尝试过使用函数“union”、“join”、“flatten”,并查找包含单词“merge”或“selectmany”的函数(我将使用该函数在带有 linq 的 c# 中进行展平)。我也尝试过搜索类似的 sql 函数,因此我可以在 Kusto 中查找等效的查询,但我没有任何运气。

我正在使用查询:

| where Nicknames != ""
| project split(Nicknames, ";")
Run Code Online (Sandbox Code Playgroud)

结果是这样的:

[
"Joe",
"Jim",
"JJ"
]
-------------
[
"Abe"
]
-------------
[
"Hal",
"Harry"
]
Run Code Online (Sandbox Code Playgroud)

我想使用类似(psudo-Kusto)的东西:

UserInfo
| where Nicknames != ""
| project split(Nicknames, ";")
| flatten results
| distinct results
Run Code Online (Sandbox Code Playgroud)

...其中“结果”是上一个操作返回的表。

kql azure-data-explorer

4
推荐指数
1
解决办法
5568
查看次数

在 Kusto 查询语言(Azure Monitor 日志)中仅获取类别内的唯一值

我有这种格式的数据:

Category Session_ID  Step_Name

  A         100        1
  A         100        2 
  A         200        1
  A         200        1    <--
  A         200        1    <--
  A         200        2
  B         300        1
  B         300        1    <--
Run Code Online (Sandbox Code Playgroud)

我需要删除每个 Session_ID 中步骤名称的重复值。例如ID = 200,有3个'1'需要改为1个'1',所以最终数据如下:

Category Session_ID  Step_Name

  A         100        1
  A         100        2 
  A         200        1
  A         200        2
  B         300        1
Run Code Online (Sandbox Code Playgroud)

azure distinct-values kql azure-data-explorer

4
推荐指数
1
解决办法
2万
查看次数

如何使用 Azure Kusto 输出多个变量?

我对 Azure Kusto 查询语言相当陌生。我正在尝试输出 2 个变量。这一定是非常简单的事情,我只是不知道如何。我尝试过使用数据表、make-series、打印等功能,但没有成功。这是我当前的代码:

let allrequests = requests | project itemCount, resultCode, success, timestamp | where timestamp > now(-1h) and timestamp < now(-5m);

let requestcount = allrequests | summarize sum(itemCount);

let errorcount = allrequests | where toint(resultCode) >= 400 and toint(resultCode) <= 499 | summarize sum(itemCount);

requestcount; errorcount
Run Code Online (Sandbox Code Playgroud)

azure kql azure-data-explorer

4
推荐指数
1
解决办法
9699
查看次数

有没有办法在 Kusto 中克隆表格?

有没有办法完全克隆 Kusto 中的表,使其具有原始表的所有范围?即使不可能保留扩展区,至少有一种高效的方法可以将表复制到新表。我尝试了以下方法:-

.set new_table <| existing_table;
Run Code Online (Sandbox Code Playgroud)

它一直运行并出现超时错误。有没有办法进行复制,以便 Kusto 引擎识别出这只是一个转储副本,因此它不会使用 Kusto 引擎,而只会从后端执行简单的 blob 复制,并将新表指向复制的 blob,从而绕过整个过程Kusto加工路线?

kql azure-data-explorer

4
推荐指数
1
解决办法
9445
查看次数

获取所有 Kusto 表和相关元数据的列表,结果中每个表一行

使用以下 Kusto 命令,我们确实为每个表获取一行,然后我们还获取该表的完整架构信息:-

.show table MyTable cslschema
Run Code Online (Sandbox Code Playgroud)

我的要求就是——在一行中,将给定表的所有信息作为一行获取。但问题是我必须在这里硬编码一个特定的表。我想使用单个命令获取数据库中所有表的此信息。就像是:-

.show table * cslschema
Run Code Online (Sandbox Code Playgroud)

但显然这是行不通的。有什么解决方法可以实现这一目标吗?最终目标是每个表一行 - 这应该包括表、文件夹、DocString 以及架构的所有信息,正是上述命令返回的内容,但它应该适用于多个表。

kql azure-data-explorer

4
推荐指数
1
解决办法
8272
查看次数

是否可以使用动态数组/列表作为参数化 kusto 查询的输入?

我有一个使用 Python 库 azure.kusto.data 来查询 Kusto 集群中的数据的应用程序。我想知道,是否可以使用动态数组作为输入来参数化 kusto 查询?

现有的文档似乎没有提到这样的功能。 https://learn.microsoft.com/en-us/azure/data-explorer/kusto/query/queryparametersstatement?pivots=azuredataexplorer

过去传递字符串类型值效果很好:

    params = {
        "scenario": "string",
        "env": "string2",
        "duration": "string3",
    }

    query = """
    declare query_parameters(scenario:string, env:string, duration:string);
    Some_Kusto_Query(scenario, env, duration)
    """
Run Code Online (Sandbox Code Playgroud)

然后,我会将字典和查询字符串传递到 Kusto 库中以获取我需要的数据。这很好用。每当我尝试以下版本时,效果就不好:

    params = {
        "scenario": "string",
        "env": "string2",
        "duration": "string3",
        "value_list": [1,2,3,4]
    }

    query = """
    declare query_parameters(scenario:string, env:string, duration:string, value_list:dynamic);
    Some_Kusto_Query(scenario, env, duration)
        | where value in value_list
    """
Run Code Online (Sandbox Code Playgroud)

我已经尝试了许多不同的迭代,但似乎无法让它发挥作用。此时我唯一的其他想法是将 value_list 作为分隔字符串(例如“1-2-3-4”)传递,并使用 kusto 中的 split() 函数将字符串反序列化回数组,但这似乎并不理想。

任何提示或指示将不胜感激 - 我已经搜索过 Kusto 文档/Google,但在网上没有找到任何好的示例。

谢谢!

python azure kql azure-data-explorer

4
推荐指数
1
解决办法
1万
查看次数

KQL:连接表后合并2列

我想合并连接了 2 个表的 2 列。这是我的代码:

let Table1 = datatable(ver: string, number:int) 
[
1.0, 5, 
2.0, 5,
2.1, 3 
];
//
let Table2 = datatable(ver: string, number:int) 
[ 
2.0, 3,
2.1, 2,
3.0, 1 
];
//
Table2
| join kind = fullouter Table1 on ver
| extend Delta = number1 - number
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

在此输入图像描述

这就是我需要的:

在此输入图像描述

join kql azure-data-explorer

4
推荐指数
1
解决办法
4312
查看次数

在提交之前验证 Kusto 查询

有没有办法(在 Powershell 中最好,但也可以)在将其提交到集群之前检查 KQL 语法?

我想检查 CI 管道中 KQL 代码存储库的完整性。

谢谢你!

kql azure-data-explorer

4
推荐指数
1
解决办法
2673
查看次数

如果行在 Kusto 中不可用,则将该值设置为 0

我的查询有 count 函数,它返回按天汇总的行数。现在,当该表中没有行时,我没有得到任何结果,而是需要包含所有天数的行并且计数为零。我尝试过coalesc但没有成功。任何帮助深表感谢!

谢谢!

这是我的查询:

exceptions
 | where name == 'my_scheduler' and timestamp > ago(30d)
 | extend day = split(tostring(timestamp + 19800s), 'T')[0]
 | summarize schedulerFailed = coalesce(count(),tolong("0")) by tostring(day)
Run Code Online (Sandbox Code Playgroud)

kql azure-data-explorer kusto-explorer

4
推荐指数
1
解决办法
4332
查看次数

如何使 Application Insights kusto 查询在 PerformanceBucket 上正确排序?

有没有办法使 Application Insights kusto 查询performanceBucket“正确”(即存储桶持续时间)排序?当我使用 PerformanceBucket 进行汇总或排序并且不指定排序时,我会得到类似的结果(请注意,例如 1-3 秒与 3-7 秒不相邻):

在此输入图像描述

如果我添加按 PerformanceBucket 排序,它将按字母数字顺序完成:

在此输入图像描述

我希望它按这个顺序(或相反)

  • <250毫秒
  • 250毫秒-500毫秒
  • 500毫秒-1秒
  • 1秒-3秒
  • 3秒-7秒
  • 7秒-15秒
  • 15秒-30秒
  • 30秒-1分钟
  • 1分钟-2分钟

azure-application-insights azure-log-analytics kql

4
推荐指数
1
解决办法
1200
查看次数