Язык запросов Azure Kusto Подсчет двух значений строк как одного

avatar
Samuel Polgar
9 августа 2021 в 06:55
316
1
0

Несколько недель назад значение в журналах моих приложений изменилось, и теперь, когда я запрашиваю журналы, я получаю два разных значения в своем счетчике. Я использую журналы Azure для построения графиков, поэтому это довольно болезненно.

Как запросить одно значение строки как другое (или запросить два значения строки вместе)?

Например Я подсчитываю значения столбца фруктов («PinkLadyApple», «Апельсин», «Банан»), 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
Источник
Slavik N
20 августа 2021 в 18:40
0

Привет @Samuel Polgar, если приведенный ниже ответ помог, я буду признателен, если вы примете его (см. это, чтобы узнать, почему и как). Спасибо!

Slavik N
20 августа 2021 в 18:40
0

Привет @Samuel Polgar, если приведенный ниже ответ помог, я буду признателен, если вы примете его (см. это, чтобы узнать, почему и как). Спасибо!

Ответы (1)

avatar
Slavik N
9 августа 2021 в 07:23
0

Вы можете изменить старое значение на новое, используя функцию 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