我有一个 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)
...其中“结果”是上一个操作返回的表。
我有这种格式的数据:
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 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) 有没有办法完全克隆 Kusto 中的表,使其具有原始表的所有范围?即使不可能保留扩展区,至少有一种高效的方法可以将表复制到新表。我尝试了以下方法:-
.set new_table <| existing_table;
Run Code Online (Sandbox Code Playgroud)
它一直运行并出现超时错误。有没有办法进行复制,以便 Kusto 引擎识别出这只是一个转储副本,因此它不会使用 Kusto 引擎,而只会从后端执行简单的 blob 复制,并将新表指向复制的 blob,从而绕过整个过程Kusto加工路线?
使用以下 Kusto 命令,我们确实为每个表获取一行,然后我们还获取该表的完整架构信息:-
.show table MyTable cslschema
Run Code Online (Sandbox Code Playgroud)
我的要求就是——在一行中,将给定表的所有信息作为一行获取。但问题是我必须在这里硬编码一个特定的表。我想使用单个命令获取数据库中所有表的此信息。就像是:-
.show table * cslschema
Run Code Online (Sandbox Code Playgroud)
但显然这是行不通的。有什么解决方法可以实现这一目标吗?最终目标是每个表一行 - 这应该包括表、文件夹、DocString 以及架构的所有信息,正是上述命令返回的内容,但它应该适用于多个表。
我有一个使用 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,但在网上没有找到任何好的示例。
谢谢!
我想合并连接了 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)
这就是我得到的:
这就是我需要的:
有没有办法(在 Powershell 中最好,但也可以)在将其提交到集群之前检查 KQL 语法?
我想检查 CI 管道中 KQL 代码存储库的完整性。
谢谢你!
我的查询有 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) 有没有办法使 Application Insights kusto 查询performanceBucket
“正确”(即存储桶持续时间)排序?当我使用 PerformanceBucket 进行汇总或排序并且不指定排序时,我会得到类似的结果(请注意,例如 1-3 秒与 3-7 秒不相邻):
如果我添加按 PerformanceBucket 排序,它将按字母数字顺序完成:
我希望它按这个顺序(或相反)