Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Applies to: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Expanderar dynamiska matriser med flera värden eller egenskapspåsar till flera poster.
mv-expand can be described as the opposite of the aggregation operators that pack multiple values into a single dynamic-typed array or property bag, such as summarize ... make-list() and make-series.
Varje element i matrisen (skalär) eller egenskapspåsen genererar en ny post i operatorns utdata. Alla kolumner i indata som inte expanderas dupliceras till alla poster i utdata.
Syntax
T|mv-expand [kind=(bag | array)] [with_itemindex=IndexColumnName] ColumnName [to typeof(Typename)] [,ColumnName ...] [limitRowlimit]
T|mv-expand [kind=(bag | array)] [Name=] ArrayExpression [to typeof(Typename)] [, [Name=] ArrayExpression [to typeof(Typename)] ...] [limitRowlimit]
Learn more about syntax conventions.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ColumnName, ArrayExpression | string |
✔️ | En kolumnreferens eller ett skalärt uttryck med ett värde av typen dynamic som innehåller en matris eller en egenskapspåse. De enskilda elementen på den översta nivån i matrisen eller egenskapsväskan expanderas till flera poster.When ArrayExpression is used and Name doesn't equal any input column name, the expanded value is extended into a new column in the output. Otherwise, the existing ColumnName is replaced. |
| Name | string |
Ett namn på den nya kolumnen. | |
| Typename | string |
✔️ | Anger den underliggande typen av matriselement, som blir den typ av kolumn som skapas av mv-expand-operatorn. Åtgärden för att tillämpa typen är endast gjuten och omfattar inte parsning eller typkonvertering. Matriselement som inte överensstämmer med den deklarerade typen blir null värden. |
| RowLimit | int |
Det maximala antalet rader som genereras från varje ursprunglig rad. Standardvärdet är 2147483647.
mvexpand är en äldre och föråldrad form av operatorn mv-expand. Den äldre versionen har en standardradgräns på 128. |
|
| IndexColumnName | string |
If with_itemindex is specified, the output includes another column named IndexColumnName that contains the index starting at 0 of the item in the original expanded collection. |
Returns
För varje post i indata returnerar operatorn noll, en eller flera poster i utdata, enligt följande:
Indatakolumner som inte expanderas visas i utdata med sitt ursprungliga värde. Om en enskild indatapost expanderas till flera utdataposter dupliceras värdet till alla poster.
For each ColumnName or ArrayExpression that is expanded, the number of output records is determined for each value as explained in modes of expansion. För varje indatapost beräknas det maximala antalet utdataposter. Alla matriser eller egenskapspåsar expanderas "parallellt" så att saknade värden (om några) ersätts med null-värden. Element expanderas till rader i den ordning de visas i den ursprungliga matrisen/påsen.
Om det dynamiska värdet är null skapas en enskild post för det värdet (null). Om det dynamiska värdet är en tom matris eller egenskapspåse skapas ingen post för det värdet. Annars skapas lika många poster som det finns element i det dynamiska värdet.
De expanderade kolumnerna är av typen dynamic, såvida de inte uttryckligen skrivs med hjälp av to typeof()-satsen.
Expansionslägen
Två lägen för expansioner av egenskapsväskan stöds:
-
kind=bagellerbagexpansion=bag: Egenskapspåsar utökas till enstaka egenskapspåsar. Det här läget är standardläget. -
kind=arrayorbagexpansion=array: Property bags are expanded into two-element[key,value]array structures, allowing uniform access to keys and values. I det här läget kan du till exempel köra en distinkt sammansättning över egenskapsnamn.
Examples
The examples in this article use publicly available tables in the help cluster, such as the
StormEventstable in the Samples database.
The examples in this article use publicly available tables, such as the
Weathertable in the Weather analytics sample gallery. Du kan behöva ändra tabellnamnet i exempelfrågan för att matcha tabellen på din arbetsyta.
Exemplen i det här avsnittet visar hur du använder syntaxen för att komma igång.
En kolumn – matrisexpansion
datatable (a: int, b: dynamic)
[
1, dynamic([10, 20]),
2, dynamic(['a', 'b'])
]
| mv-expand b
Output
| a | b |
|---|---|
| 1 | 10 |
| 1 | 20 |
| 2 | a |
| 2 | b |
Enkel kolumn – påsexpansion
En enkel expansion av en enskild kolumn:
datatable (a: int, b: dynamic)
[
1, dynamic({"prop1": "a1", "prop2": "b1"}),
2, dynamic({"prop1": "a2", "prop2": "b2"})
]
| mv-expand b
Output
| a | b |
|---|---|
| 1 | {"prop1": "a1"} |
| 1 | {"prop2": "b1"} |
| 2 | {"prop1": "a2"} |
| 2 | {"prop2": "b2"} |
Enkel kolumn – påsexpansion till nyckel/värde-par
En enkel påse-expansion till nyckel/värde-par:
datatable (a: int, b: dynamic)
[
1, dynamic({"prop1": "a1", "prop2": "b1"}),
2, dynamic({"prop1": "a2", "prop2": "b2"})
]
| mv-expand kind=array b
| extend key = b[0], val=b[1]
Output
| a | b | key | val |
|---|---|---|---|
| 1 | ["prop1","a1"] |
prop1 | a1 |
| 1 | ["prop2","b1"] |
prop2 | b1 |
| 2 | ["prop1","a2"] |
prop1 | a2 |
| 2 | ["prop2","b2"] |
prop2 | b2 |
Zippade två kolumner
Expandera två kolumner först "zip" de tillämpliga kolumnerna och expandera dem sedan:
datatable (a: int, b: dynamic, c: dynamic)[
1, dynamic({"prop1": "a", "prop2": "b"}), dynamic([5, 4, 3])
]
| mv-expand b, c
Output
| a | b | c |
|---|---|---|
| 1 | {"prop1":"a"} | 5 |
| 1 | {"prop2":"b"} | 4 |
| 1 | 3 |
Kartesisk produkt av två kolumner
Om du vill få en kartesisk produkt av att expandera två kolumner expanderar du en efter en:
datatable (a: int, b: dynamic, c: dynamic)
[
1, dynamic({"prop1": "a", "prop2": "b"}), dynamic([5, 6])
]
| mv-expand b
| mv-expand c
Output
| a | b | c |
|---|---|---|
| 1 | { "prop1": "a"} | 5 |
| 1 | { "prop1": "a"} | 6 |
| 1 | { "prop2": "b"} | 5 |
| 1 | { "prop2": "b"} | 6 |
Convert output
Om du vill tvinga utdata från en mv-expandering till en viss typ (standardvärdet är dynamiskt) använder du to typeof:
datatable (a: string, b: dynamic, c: dynamic)[
"Constant", dynamic([1, 2, 3, 4]), dynamic([6, 7, 8, 9])
]
| mv-expand b, c to typeof(int)
| getschema
Output
| ColumnName | ColumnOrdinal | DateType | ColumnType |
|---|---|---|---|
| a | 0 | System.String |
string |
| b | 1 | System.Object |
dynamic |
| c | 2 | System.Int32 |
int |
Meddelandekolumnen b returneras som dynamic medan c returneras som int.
Using with_itemindex
Expansion av en matris med with_itemindex:
range x from 1 to 4 step 1
| summarize x = make_list(x)
| mv-expand with_itemindex=Index x
Output
| x | Index |
|---|---|
| 1 | 0 |
| 2 | 1 |
| 3 | 2 |
| 4 | 3 |
Related content
- mv-apply operator.
- For the opposite of the mv-expand operator, see summarize make_list().
- For expanding dynamic JSON objects into columns using property bag keys, see bag_unpack() plugin.
- parse_json function
- array_iff function