Кусто: Как отворачивать - превращать столбцы в строки?

Использование таблицы StormEvents в базе данных Samples в кластере справки:

StormEvents
| where State startswith "AL"
| where EventType has "Wind"
| where StartTime == "2007-01-02T02:16:00Z"
| project StartTime, State, EventType, InjuriesDirect, InjuriesIndirect, DeathsDirect, DeathsIndirect

Мне нужен строковый вывод формы:

желаемый результат без поворота

Я вижу функцию pivot (), но, похоже, она работает только в другом направлении, от строк к столбцам.

Я пробовал различные идеи pack (), но не могу получить требуемый результат.

Пример:

StormEvents
| where State startswith "AL"
| where EventType has "Wind"
| where StartTime == "2007-01-02T02:16:00Z"
| project StartTime, State, EventType, InjuriesDirect, InjuriesIndirect, DeathsDirect, DeathsIndirect
| extend Packed =   pack(
                    "CasualtyType", "InjuriesDirect", "CasualtyCount", InjuriesDirect,
                    "CasualtyType", "InjuriesIndirect", "CasualtyCount", InjuriesIndirect,
                    "CasualtyType", "DeathsDirect", "CasualtyCount", DeathsDirect,
                    "CasualtyType", "DeathsIndirect", "CasualtyCount", DeathsIndirect
                )
| project-away InjuriesDirect, InjuriesIndirect, DeathsDirect, DeathsIndirect
| mv-expand Packed

Это дает мне слишком много строк, и мне все равно непонятно, как преобразовать их в столбцы.

Какой правильный шаблон использовать для требуемого вывода?


person sherifffruitfly    schedule 12.11.2019    source источник


Ответы (1)


вы можете попробовать что-то вроде следующего:

let casualty_types = dynamic(["InjuriesDirect", "DeathsDirect", "InjuriesIndirect", "DeathsIndirect"]);
StormEvents
| where State startswith "AL"
| where EventType has "Wind"
| where StartTime == "2007-01-02T02:16:00Z"
| project StartTime, State, EventType, properties = pack_all()
| mv-apply casualty_type = casualty_types to typeof(string) on (
    project casualty_type, casualty_count = tolong(properties[casualty_type])
)
| project-away properties
person Yoni    schedule 12.11.2019
comment
Спасибо! Я только что придумал, по сути, ту же идею, но с использованием соединения datatable +. Хотя твой выглядит менее глупо, чем мой. - person sherifffruitfly; 12.11.2019
comment
Вопрос: как Кусто узнает, что в финале, properties [casualty_type], что есть? На мой взгляд, это выглядит бессмысленным - в свойствах json нет столбца с таким именем? - person sherifffruitfly; 12.11.2019
comment
это не имя свойства в полезной нагрузке JSON, а скорее имя расширенного столбца (casualty_types), значение которого является именем свойства в полезной нагрузке JSON - person Yoni; 12.11.2019
comment
Спасибо - я пережевываю это & ​​mv-apply вообще! - person sherifffruitfly; 13.11.2019