azure - Azure Kusto 查询语言将两个行值计为一个
问题描述
几周前我的应用程序日志中的一个值发生了变化,现在当我查询日志时,我的计数中收到了两个不同的值。我正在使用 Azure Logs 进行绘图,所以这相当痛苦。
如何查询一个行值作为另一行值(或同时查询两个行值)?
例如,我正在计算水果列值('PinkLadyApple'、'Orange'、'Banana'),PinkLadyApple 现在是 JazzApple,当我计算 90 天的结果时,我会收到
Name | Sum
PinkLadyApple | 100
JazzApple | 20
Orange | 150
Banana | 80
我正在寻找一种解决方案,可以将响应中的值重命名为仅 Apple,或者可以在 JazzApple 下组合这两个值,然后将结果呈现在图表中。
我的查询看起来像
fruits
| where timestamp > ago(90d)
| where fruitname in ('PinkLadyApple', 'Orange', 'Banana')
| summarize FruitCount = sum(OtherColumn) by name
解决方案
您可以使用函数将旧值更改为新值iff()
,如下所示:
fruits
| where timestamp > ago(90d)
| where fruitname in ('JazzApple', 'PinkLadyApple', 'Orange', 'Banana')
| extend fruitname = iff(fruitname == 'JazzApple', 'PinkLadyApple', fruitname)
| summarize FruitCount = sum(OtherColumn) by name
请注意,为了获得最佳性能,我过滤旧值和新值(使用索引),然后才将旧值更改为新值,就在summarize
运算符之前。
如果您有多个重命名的值,则可以改用该case()
函数,如下所示:
fruits
| where timestamp > ago(90d)
| where fruitname in ('JazzApple', 'PinkLadyApple', 'Orange', 'Banana', 'OldValue2', 'OldValue3')
| extend fruitname = case(
fruitname == 'JazzApple', 'PinkLadyApple',
fruitname == 'OldValue2', 'NewValue2',
fruitname == 'OldValue3', 'NewValue3',
fruitname)
| summarize FruitCount = sum(OtherColumn) by name
推荐阅读
- php - 如何在 Woocommerce 结帐页面中添加额外费用复选框
- python - string.split() 的意外行为
- gcc - 为什么 GCC 在“westmere”架构上默认禁用以下选项,尽管“westmere”支持它们
- reactjs - 带有 shopify 北极星 Reactjs 的 Google 字体
- r - 将 ifelse 与日期时间数据一起使用时,如何停止隐式日期转换?
- c++ - vkEnumerateDeviceExtensionProperties 抛出神秘的错误代码
- c# - Xamarin.Forms:Map.IsShowingUser 不显示当前位置?
- c# - 即使被告知显示标签也不会显示
- c# - 如何修复“JsonSerializerSettings”无法访问字段“DefaultContext”
- jsf - 通过单击表格中的按钮获取元素