标签: kql

Kusto:将结果过滤到每个 ID 的最新记录

假设我在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,并且未排序。)

kql azure-data-explorer

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

如何使用 Kusto 查询语言打印树?

下面是一个快速而乏味的解决方案。

如果您有更好的,请将其包含在您的答案中。

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

10
推荐指数
2
解决办法
905
查看次数

Kusto:如何将列转换为行并按行进行汇总

我有一张这样的桌子:-

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)

kql azure-data-explorer

9
推荐指数
1
解决办法
7793
查看次数

如何从 KQL 中的时间跨度获取分钟数

我想提取我正在处理的 Kusto 查询的时间(以分钟为单位)。我有一个时间跨度以以下格式表示的列 (HH:MM:SS.MilliSeconds) 01:18:54.0637555。我想从中提取分钟数,在本例中为 78 分钟。我怎样才能做到这一点 ?

time kql azure-data-explorer

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

kusto 中的多个 where 子句与“and”

就性能而言,是以下查询

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)

或者记录是否按顺序过滤,执行两次搜索而不是组合一次?

kql azure-data-explorer

9
推荐指数
2
解决办法
5476
查看次数

查询 Azure Log Analytics 中的多个表

我正在查看 Web 应用程序的 Azure 日志分析,并且我有多个包含数据的开箱即用“表”:traces, requests,exceptions等。

我可以构造一个对多个表中的数据运行的查询吗?我不想加入来自不同来源的数据,我只想连接/交错它,所以我可以寻找例如“所有痕迹包含字符串‘SQL’的

从理论上讲,类似于:

traces, exceptions
| where * contains "SQL"
| order by timestamp desc
| limit 100
Run Code Online (Sandbox Code Playgroud)

这可能吗?

azure azure-log-analytics kql azure-data-explorer

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

使用 Kusto 获取每组的前 1 行

我有一个表,我想使用 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

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

使用“汇总依据”时,将 UTC“TimeGenerate”转换为 Azure 监视器/日志/分析中的本地时间

我有这个简单的查询

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)

这可以做到吗?

azure-monitoring azure-log-analytics kql azure-analytics

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

如何用kusto查询语言解析json数组

如何用 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)

azure-log-analytics kql

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

Kusto 自定义排序顺序?

如何在 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)

需要:

  • 我想将各种OperationNamesGetBlobAppendFile等)放入自定义订单中。
  • 就像是: | sort by OperationName['GetBlob'], OperationName['AppendFile'], OperationName asc
  • 理想情况下,我想指定排序依据的值,然后允许 Kusto 使用asc/对剩余的进行排序desc

这可能吗?

azure-log-analytics kql azure-data-explorer

7
推荐指数
1
解决办法
2675
查看次数