Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Applies to: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Rozszerza tablice dynamiczne lub torby właściwości wielowartość na wiele rekordów.
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.
Każdy element w tablicy (skalarnej) lub worek właściwości generuje nowy rekord w danych wyjściowych operatora. Wszystkie kolumny danych wejściowych, które nie są rozwinięte, są zduplikowane do wszystkich rekordów w danych wyjściowych.
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 | Typ | Required | Description |
|---|---|---|---|
| ColumnName, ArrayExpression | string |
✔️ | Odwołanie do kolumny lub wyrażenie skalarne z wartością typu dynamic , który zawiera tablicę lub torbę właściwości. Poszczególne elementy najwyższego poziomu tablicy lub torby właściwości są rozszerzane na wiele rekordów.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 |
Nazwa nowej kolumny. | |
| Typename | string |
✔️ | Wskazuje podstawowy typ elementów tablicy, który staje się typem kolumny wygenerowanej mv-expand przez operatora. Operacja stosowania typu jest tylko rzutowania i nie obejmuje analizowania ani konwersji typów. Elementy tablicy, które nie są zgodne z zadeklarowanymi typami, stają się null wartościami. |
| RowLimit | int |
Maksymalna liczba wierszy wygenerowanych z każdego oryginalnego wiersza. Wartość domyślna to 2147483647.
mvexpand to starsza i przestarzała forma operatora mv-expand. Starsza wersja ma domyślny limit wierszy 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
Dla każdego rekordu w danych wejściowych operator zwraca zero, jeden lub wiele rekordów w danych wyjściowych, jak określono w następujący sposób:
Kolumny wejściowe, które nie są rozwinięte, są wyświetlane w danych wyjściowych z ich oryginalną wartością. Jeśli pojedynczy rekord wejściowy jest rozszerzany na wiele rekordów wyjściowych, wartość jest duplikowana do wszystkich rekordów.
For each ColumnName or ArrayExpression that is expanded, the number of output records is determined for each value as explained in modes of expansion. Dla każdego rekordu wejściowego jest obliczana maksymalna liczba rekordów wyjściowych. Wszystkie tablice lub torby właściwości są rozszerzane "równolegle", aby brakujące wartości (jeśli istnieją) zostały zastąpione wartościami null. Elementy są rozszerzane na wiersze w kolejności, w której są wyświetlane w oryginalnej tablicy/torbie.
Jeśli wartość dynamiczna ma wartość null, zostanie wygenerowany pojedynczy rekord dla tej wartości (null). Jeśli wartość dynamiczna jest pustą tablicą lub torbą właściwości, dla tej wartości nie jest generowany żaden rekord. W przeciwnym razie liczba rekordów jest generowanych, ponieważ istnieją elementy w wartości dynamicznej.
Rozwinięte kolumny są typu dynamic, chyba że są jawnie wpisywane przy użyciu klauzuli to typeof() .
Tryby rozszerzania
Obsługiwane są dwa tryby rozszerzeń torby właściwości:
-
kind=baglubbagexpansion=bag: Torby właściwości są rozszerzane na torby nieruchomości jednokrotnych. Ten tryb jest trybem domyślnym. -
kind=arrayorbagexpansion=array: Property bags are expanded into two-element[key,value]array structures, allowing uniform access to keys and values. Ten tryb umożliwia również uruchamianie agregacji unikatowej liczby dla nazw właściwości.
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. Może być konieczne zmodyfikowanie nazwy tabeli w przykładowym zapytaniu, aby było zgodne z tabelą w obszarze roboczym.
W przykładach w tej sekcji pokazano, jak używać składni, aby ułatwić rozpoczęcie pracy.
Pojedyncza kolumna — rozszerzanie tablicy
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 |
Pojedyncza kolumna — rozszerzanie torby
Proste rozszerzanie pojedynczej kolumny:
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"} |
Pojedyncza kolumna — rozszerzanie torby na pary klucz-wartość
Prosta ekspansja torby do par klucz-wartość:
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 | klucz | val |
|---|---|---|---|
| 1 | ["prop1","a1"] |
prop1 | a1 |
| 1 | ["prop2","b1"] |
prop2 | b1 |
| 2 | ["prop1","a2"] |
prop1 | a2 |
| 2 | ["prop2","b2"] |
prop2 | b2 |
Spakowane dwie kolumny
Rozwiń najpierw dwie kolumny "zip" odpowiednie kolumny, a następnie rozwiń je:
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 |
Produkt kartezjański dwóch kolumn
Jeśli chcesz uzyskać kartezjański produkt rozszerzający dwie kolumny, rozwiń jeden po drugim:
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
Aby wymusić rozszerzenie mv-expand do określonego typu (wartość domyślna jest dynamiczna), użyj polecenia 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 |
Zwróć uwagę, że kolumna b jest zwracana w dynamic czasie, gdy c jest zwracana jako int.
Using with_itemindex
Rozszerzanie tablicy za pomocą polecenia 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