Tabular OperatorsOther Operators
mv-expand
Expands multi-value dynamic arrays or property bags into multiple rows, duplicating other columns.
Expands multi-value dynamic arrays or property bags into multiple rows, duplicating other columns. Tip: if you only need to filter rows where any array element matches a condition, use the wildcard array access syntax instead — e.g. where events[*].name == "error" — which avoids expanding rows.
Syntax
mv-expand columnExpand array column into rows
Parameters
| Name | Description |
|---|---|
| column | Column containing dynamic array to expand |
Syntax
mv-expand column to typeof(type)Expand with type conversion
Parameters
| Name | Description |
|---|---|
| column | Column containing dynamic array to expand |
| type | Type to cast expanded values to |
Examples
Example 1
datatable(ship:string, cargo:dynamic)[
"Naglfar", dynamic(["silver", "gold", "amber"]),
"Wave Rider", dynamic(["furs", "ivory"])
]
| mv-expand cargo| ship (string) | cargo (dynamic) |
|---|---|
| Naglfar | "amber" |
| Naglfar | "gold" |
| Naglfar | "silver" |
| Wave Rider | "furs" |
| Wave Rider | "ivory" |
Example 2
datatable(jarl:string, raids:dynamic)[
"Erik", dynamic([100, 250, 50]),
"Olaf", dynamic([300, 150])
]
| mv-expand raids to typeof(long)| jarl (string) | raids (long) |
|---|---|
| Erik | 100 |
| Erik | 250 |
| Erik | 50 |
| Olaf | 150 |
| Olaf | 300 |
Example 3
datatable(warrior:string, weapons:dynamic)[
"Ragnar", dynamic(["axe", "shield", "seax"]),
"Lagertha", dynamic(["spear", "shield"])
]
| mv-expand weapons
| summarize count() by tostring(weapons)| weapons (string) | count_ (long) |
|---|---|
| axe | 1 |
| seax | 1 |
| shield | 2 |
| spear | 1 |