学习Kusto,不明白bin()函数如何对时间戳进行分组:
StormEvents
| where StartTime > datetime(2007-02-14) and StartTime < datetime(2007-03-21)
| summarize event_count = count() by bin(StartTime, 7d)
Run Code Online (Sandbox Code Playgroud)
结果是:
StartTime | event_count
**2007-02-12** 00:00:00.0000000 | 535
2007-02-19 00:00:00.0000000 | 1652
2007-02-26 00:00:00.0000000 | 1688
2007-03-05 00:00:00.0000000 | 442
2007-03-12 00:00:00.0000000 | 796
2007-03-19 00:00:00.0000000 | 54
Run Code Online (Sandbox Code Playgroud)
问题:为什么结果的第一个日期是从 2-12 开始,而不是我的代码所示的 2-14?
先感谢您
下面是一个快速而乏味的解决方案。
如果您有更好的,请将其包含在您的答案中。
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
我查询请求日志以获取状态代码的摘要。不过,我想在结果末尾添加一行,显示请求总数。如何添加这样的行?
当前查询(简化)
MyLog
| summarize count() by responseCode
Run Code Online (Sandbox Code Playgroud)
目前的结果看起来像
| 响应码 | 数数 |
|---|---|
| 200 | 1000 |
| 404 | 20 |
| 500 | 100 |
我想要这样的总数
| 响应码 | 数数 |
|---|---|
| 200 | 1000 |
| 404 | 20 |
| 500 | 100 |
| 全部的 | 1120 |
我有 2 个 KQL 查询,我想将它们组合起来以将两行显示为一个结果。不仅仅是第一次查询的结果,然后是第二次查询的结果:
R_CL
| where isnotempty(SrcIP_s)
| project Message
| take 1;
R_CL
| where isempty(SrcIP_s)
| project Message
| take 1
Run Code Online (Sandbox Code Playgroud)
请参阅下面的示例R_L。我想看到 2 行作为结果,一个 SrcIP_s 不为空,第二个 SrcIP_s 为空(在这种情况下,它总是相同的)
let R_CL = datatable ( SrcIP_s:string, Message:string)
["1.1.1.1" ,"one",
"" ,"two",
"2.2.2.2","three",
"3.3.3.3","four"];
R_CL
| project SrcIP_s, Message
Run Code Online (Sandbox Code Playgroud) 在 Azure 门户中使用“监视器”、“日志”功能时,您可以通过将列标题拖放到某个框中来对行进行分组,问题是按“保存”按钮时不会保存此内容。
如何编写生成相同结果的 KQL?按 Column_Name 进行汇总不会产生相同的结果。
我是一名 C 程序员,也是 Kusto 的新手。我正在运行 Kusto 查询,它为我提供了直接搜索唯一 ID 号的结果。如何运行该查询来获取 ID 号列表。在 CI 中,将使用 for 循环来处理列表数组中的项目范围,但我不知道如何在 Kusto 中转换该逻辑。
询问:
let startdate = ago(5d); let enddate = ago(1m);
DataBase
| where messageType != "Beacon"
| where timestamp between (startdate..enddate)
| where uniqueId == "26ca68"
| project uniqueId, timestamp
Run Code Online (Sandbox Code Playgroud)
我希望运行上述查询来获取 25 个唯一 ID 号的列表。谢谢。
有没有办法使用现有的 Kusto 命令排除两个日期之间的周末?我在这里找不到正确的功能https://kusto.azurewebsites.net/docs/queryLanguage/query-essentials/readme.html
我的数据源是“元数据”。每台设备都有一个唯一的ID,每天可以多次签到。我想提出一个 Kusto 查询,该查询在过去 30 天内每天为每个 deviceID 返回一条记录。这是我目前的公式:
Metadata
| project-rename['Metadata.deviceID']=deviceID, ['Metadata.appName']=appName, ['Metadata.appVersion']=appVersion, ['Metadata.timeZone']=timeZone
| where (dateTimeUtc >= __sql_substract(now(), 30))
| summarize appName=max(['Metadata.appName']), deviceID=max(['Metadata.deviceID']), appVersion=max(['Metadata.appVersion']), timeZone=max(['Metadata.timeZone']) by bin(dateTimeUtc, 1d)
| project dateTimeUtc, appName, appVersion, timeZone, deviceID
Run Code Online (Sandbox Code Playgroud)
这将每天返回 1 条记录,而不是每个设备 ID 每天返回 1 条记录。如果我删除 bin() 并仅使用“by dateTimeUtc”,则每天每个 deviceID 返回一条以上记录。如何为每个 deviceID 获取过去 30 天内每天的一条记录?
我有一个 ADF,它每天将 Kusto 函数的输出写入 Kusto 表。我需要每天将数据更新到表中。我没有找到更新 Kusto DB 中现有数据的方法。如果数据不存在,有什么方法可以插入行,否则通过 ADF 更新现有行?
设置或替换对我来说非常昂贵,因为该表包含大量数据
如果这是不可能的,我可以使用我拥有的日期时间戳截断最近 2 个月的数据并从函数中重新加载它吗
我有一个 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)
...其中“结果”是上一个操作返回的表。