问题描述
我对KQL还是很陌生,并且很难过(我没有统计方面的知识,而且我也不擅长sql)。我有来自Microsoft AppCenter的遥测数据,我想将其解析为一些图表,但是我试图首先弄清楚如何拆分连接的字符串,该字符串本质上是一个具有两个可能值的字典:true和false。我想计算每个数字,所以每个键都有2个值(对/错),每个值也都有一个数字计数值。
我要从中获取此数据的输入字符串的格式为Remove Splash/Main Menu branding=True;disable aim Assist=False
-唯一的项目由;分隔;并且每对被=分隔。我试图找出我的用户正在使用哪种选项。此处的示例字符串将被拆分为:
Remove Splash/Main Menu branding = True (count 1)
disable aim Assist = False (count 1).
如果有一个新项目是Remove Splash/Main Menu branding=True;disable aim Assist=True
,则汇总数据将是
Remove Splash/Main Menu branding = True (count 2)
disable aim Assist = False (count 1).
disable aim Assist = True (count 1).
到目前为止,我有一个选择单个项目的查询,但是我不知道如何在多行中进行计数:
customEvents
| where timestamp > ago(7d)
| where name == "Installed a mod"
| extend Properties = todynamic(tostring(customDimensions.Properties))
| where isnotnull(Properties.["Alternate Options Selected"])
| extend Optionsstr = Properties.["Alternate Options Selected"] //The example string in above
| extend ModName = Properties.["Mod name"]
| where ModName startswith "SP Controller Support" //want to filter only to one mod's options
| extend optionssplit = split(Optionsstr,";")
| summarize any(optionssplit)
我不确定如何在字典中对其进行计数。如果有人对这样的事情有任何建议,技巧或例子,我将非常感谢,谢谢。
解决方法
您在这里:
let MyTable = datatable(Flags:string) [
"Remove Splash/Main Menu Branding=True;Disable Aim Assist=False","Remove Splash/Main Menu Branding=True;Disable Aim Assist=True"
];
MyTable
| extend Flags = split(Flags,";")
| mv-expand Flag = Flags to typeof(string)
| summarize Count = count() by Flag
此输出为:
| Flag | Count |
|---------------------------------------|-------|
| Remove Splash/Main Menu Branding=True | 2 |
| Disable Aim Assist=False | 1 |
| Disable Aim Assist=True | 1 |
说明:
- 首先,将每个输入字符串(包含多个标志)拆分为子字符串,以便每个输入字符串仅具有一个标志-您可以使用
split
来实现。 - 现在,新的
Flags
列具有一个字符串列表(每个字符串都包含一个标志),并且您想为每个字符串创建一个记录,因此可以使用mv-expand
运算符 - 最后,您要计算每个键=值对出现的次数,并使用
summarize count() by Flag
如果您希望每个键看到一个记录(在输出中),则可以使用以下查询代替:
let MyTable = datatable(Flags:string) [
"Remove Splash/Main Menu Branding=True;Disable Aim Assist=False",";")
| mv-expand Flag = Flags to typeof(string)
| parse Flag with Key "=" Value
| project Key,Value
| evaluate pivot(Value,count(Value))
其输出是:
| Key | False | True |
|----------------------------------|-------|------|
| Remove Splash/Main Menu Branding | 0 | 2 |
| Disable Aim Assist | 1 | 1 |
您写道您是KQL的新手,因此您可能会发现以下有趣的免费Pluralsight课程:
P.S。以后,请以datatable
格式提供示例输入(如果您使用的是Kusto Explorer,只需选择相关的查询结果,右键单击所选内容,然后单击Copy as datatable() literal
),然后输入预期的以表格格式输出,以便更轻松地了解您要实现的目标。