Показать данные путем группировки значений в столбце - PullRequest
0 голосов
/ 27 февраля 2020

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

TimeStamp,Unit,Alarm,Machine
2020/02/25 13:33:45,A,Error,M1
2020/02/25 13:33:46,B,Error,M1
2020/02/25 13:33:47,C,Serious Error,M2
2020/02/25 13:33:48,A,Warning,M4
2020/02/25 13:33:49,C,Information,M3
2020/02/25 13:33:50,B,Information,M1
2020/02/25 13:33:51,D,Warning,M1
2020/02/25 13:33:52,E,Error,M2
2020/02/25 13:33:53,A,Serious Error,M4
2020/02/25 13:33:54,C,Dead Serious Error,M5
2020/02/25 13:33:55,B,Serious Error,M2
2020/02/25 13:33:56,B,Warning,M1
2020/02/25 13:33:57,D,Information,M3
2020/02/25 13:33:58,A,Warning,M2
2020/02/25 13:33:59,C,Error,M1
2020/02/25 13:34:00,E,Error,M2
2020/02/25 13:34:01,C,Critical Error,M4
2020/02/25 13:34:02,A,Critical Error,M5
2020/02/25 13:34:03,B,Error,M4
2020/02/25 13:34:04,C,Warning,M2

В конструкторе, если я хочу показывать тревоги по количеству, я могу просто создать столбец диаграмма с Axis = Alarm и Value = Count of Alarm, что даст мне следующее.

enter image description here

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

Ошибки - любой сигнал тревоги, содержащий слово «ошибка».

Предупреждения - Любая тревога, которая содержит слово «предупреждение».

Другое - все остальное.

Это означало бы, что вышеуказанный журнал будет сгруппирован в 3 категории, и он должен выглядеть следующим образом.

enter image description here

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

Я знаю, что функция GroupBy существует в редакторе запросов, но, похоже, она не дает нужные мне результаты.


Редактировать

Обратите внимание, что в моем реальном журнале есть сотни (если не тысячи) различных сигналов тревоги, и я также могу получать ежедневные журналы из разных мест, где каждый новый журнал может потенциально содержать сигнал тревоги, который не был там раньше. К сожалению, у меня нет полного списка аварийных сигналов по всем направлениям, поэтому создание таблицы stati c с сгруппированными аварийными сигналами не вариант.

1 Ответ

1 голос
/ 27 февраля 2020

Вы можете создать вычисляемый столбец либо в редакторе запросов, либо с помощью DAX, чтобы сгруппировать их, а затем использовать этот вычисленный столбец вместо Alarm для вашей оси.

Вот пример того, как вы могли бы это сделать с DAX:

Group =
SWITCH (
    TRUE (),
    CONTAINSSTRING ( 'Table'[Alarm], "Error" ), "Errors",
    CONTAINSSTRING ( 'Table'[Alarm], "Warning" ), "Warnings",
    "Other"
)

Этот SWITCH возвращает значение для первой строки, равное TRUE(). Подробнее об этом здесь:

DAX - дьявольский гений «ПРАВДЫ ПЕРЕКЛЮЧЕНИЯ»


Вы также можете сделать это с помощью пользовательского столбца в редакторе запросов. используя M-код следующим образом:

if Text.Contains([Alarm], "Error") then "Errors"
else if Text.Contains([Alarm], "Warning") then "Warnings"
else "Other"

Примечание: M-код чувствителен к регистру, а DAX - нет.

...