假设我在Azure 数据资源管理器中有一个如下所示的表:
let data = datatable(id:int, dateTime:datetime)
[
1,"2021-03-03",
1,"2021-03-04",
1,"2021-03-12",
2,"2021-03-04",
2,"2021-03-04",
2,"2021-03-07"
]
Run Code Online (Sandbox Code Playgroud)
我想要一个Kusto 查询语言查询,它将查找每个 id 具有最新日期时间的记录。即,我希望查询返回以下记录:
ID | 约会时间 |
---|---|
2 | 2021-03-07 00:00:00.0000000 |
1 | 2021-03-12 00:00:00.0000000 |
我查看了这个问题,但在这种情况下,操作员只需要一条记录,这是整个表的最大值。我想取回每个id 的最新日期时间的记录。
我怎样才能做到这一点?
(此示例表仅供说明之用,我正在处理的实际数据要大得多,并且具有许多 ID,并且未排序。)
下面是一个快速而乏味的解决方案。
如果您有更好的,请将其包含在您的答案中。
let tree_height = 15;
range i from -1 to tree_height * 2 step 2
| extend side_width = tree_height + 1 - i / 2
| extend side_space = strrep(" ", side_width)
| extend tree_part = case(i > 0, strcat("/", strrep("*", i), @"\"), " ^ ")
| project ta_da = strcat(side_space, tree_part, side_space)
Run Code Online (Sandbox Code Playgroud)
^
/*\
/***\
/*****\
/*******\
/*********\
/***********\
/*************\
/***************\
/*****************\
/*******************\
/*********************\
/***********************\
/*************************\
/***************************\
/*****************************\
Run Code Online (Sandbox Code Playgroud)
kql azure-data-explorer azure-sentinel azure-monitor kusto-explorer
我有一张这样的桌子:-
Type | shown | eaten |
-----------------------
a | 5 | 2 |
b | 6 | 23 |
c | 8 | 12 |
d | 19 | 11 |
e | 2 | 22 |
-----------------------
Run Code Online (Sandbox Code Playgroud)
我想这样转换它:-
Type | action | count |
-----------------------
a | shown | 5 |
a | eaten | 2 |
b | shown | 6 |
b | eaten | 23 |
c | shown | 8 |
c | eaten …
Run Code Online (Sandbox Code Playgroud) 我想提取我正在处理的 Kusto 查询的时间(以分钟为单位)。我有一个时间跨度以以下格式表示的列 (HH:MM:SS.MilliSeconds) 01:18:54.0637555。我想从中提取分钟数,在本例中为 78 分钟。我怎样才能做到这一点 ?
就性能而言,是以下查询
ResourceEvents
| where ResourceType == "Foo" and EventType == "Bar"
Run Code Online (Sandbox Code Playgroud)
几乎与
ResourceEvents
| where ResourceType == "Foo"
| where EventType == "Bar"
Run Code Online (Sandbox Code Playgroud)
或者记录是否按顺序过滤,执行两次搜索而不是组合一次?
我正在查看 Web 应用程序的 Azure 日志分析,并且我有多个包含数据的开箱即用“表”:traces
, requests
,exceptions
等。
我可以构造一个对多个表中的数据运行的查询吗?我不想加入来自不同来源的数据,我只想连接/交错它,所以我可以寻找例如“所有痕迹和包含字符串‘SQL’的
从理论上讲,类似于:
traces, exceptions
| where * contains "SQL"
| order by timestamp desc
| limit 100
Run Code Online (Sandbox Code Playgroud)
这可能吗?
我有一个表,我想使用 Kusto 查询语言获取每个组的最新条目。这是表格:
文档状态日志
ID | 文档ID | 地位 | 创建日期 |
---|---|---|---|
2 | 1 | S1 | 2011年7月29日 |
3 | 1 | S2 | 2011年7月30日 |
6 | 1 | S1 | 2011年8月2日 |
1 | 2 | S1 | 2011年7月28日 |
4 | 2 | S2 | 2011年7月30日 |
5 | 2 | S3 | 2011年8月1日 |
6 | 3 | S1 | 2011年8月2日 |
该表将按 DocumentID 分组并按 DateCreated 降序排序。对于每个 DocumentID,我想获取最新状态。
我的首选输出:
文档ID | 地位 | 创建日期 |
---|---|---|
1 | S1 | 2011年8月2日 |
2 | S3 | 2011年8月1日 |
3 | S1 | 2011年8月2日 |
有没有办法使用 KQL 只获取每个组中的顶部?
GetOnlyTheTop伪代码如下:
SELECT
DocumentID,
GetOnlyTheTop(Status),
GetOnlyTheTop(DateCreated)
FROM DocumentStatusLogs
GROUP BY DocumentID
ORDER BY DateCreated DESC
Run Code Online (Sandbox Code Playgroud)
图片来源:改编自 DPP 的 SQL 问题:获取每组的前 1 行
group-by partition-by kql azure-data-explorer kusto-explorer
我有这个简单的查询
MyLog
| summarize avg(executionTimeInMS_d) by bin(TimeGenerated, 5min)
Run Code Online (Sandbox Code Playgroud)
我希望摘要采用我当地的时区,而不是 UTC。这不起作用:
MyLog
| summarize avg(executionTimeInMS_d) by bin(TimeGenerated-5, 5min)
Run Code Online (Sandbox Code Playgroud)
这可以做到吗?
如何用 kusto 查询语言解析 json 数组。我有一个输出列,其值采用 JSON 数组格式,如下所示。我需要解析它以获取两列形式的值。
{"count": 14
"value": [
{
"Total_Record_Count": 16608,
"date": "2021-03-01T00:00:00Z"
},
{
"Total_Record_Count": 27254,
"date": "2021-02-24T00:00:00Z"
},
{
"Total_Record_Count": 6,
"date": "2021-02-01T00:00:00Z"
},
{
"Total_Record_Count": 26964,
"date": "2021-01-15T00:00:00Z"
},
{
"Total_Record_Count": 134516,
"date": "2020-12-18T00:00:00Z"
},
{
"Total_Record_Count": 27345,
"date": "2020-12-16T00:00:00Z"
},
{
"Total_Record_Count": 521,
"date": "2020-12-01T00:00:00Z"
},
{
"Total_Record_Count": 4,
"date": "2020-11-02T00:00:00Z"
},
{
"Total_Record_Count": 6,
"date": "2020-10-01T00:00:00Z"
},
{
"Total_Record_Count": 1,
"date": "2020-09-01T00:00:00Z"
},
{
"Total_Record_Count": 3,
"date": "2020-08-03T00:00:00Z"
},
{
"Total_Record_Count": 18, …
Run Code Online (Sandbox Code Playgroud) 如何在 Kusto 中执行自定义排序顺序?
查询示例:
//==================================================//
// Assign variables
//==================================================//
let varStart = ago(2d);
let varEnd = now();
let varStorageAccount = 'stgacctname';
//==================================================//
// Filter table
//==================================================//
StorageBlobLogs
| where TimeGenerated between (varStart .. varEnd)
and AccountName == varStorageAccount
| sort by OperationName
Run Code Online (Sandbox Code Playgroud)
需要:
OperationNames
(GetBlob
、AppendFile
等)放入自定义订单中。| sort by OperationName['GetBlob'], OperationName['AppendFile'], OperationName asc
asc
/对剩余的进行排序desc
。这可能吗?