Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: ✅Microsoft Fabric✅Azure Data Explorer
Wtyczka bag_unpack
rozpakuje pojedynczą kolumnę typu dynamic
, traktując każde gniazdo najwyższego poziomu właściwości jako kolumnę. Wtyczka jest wywoływana z operatorem evaluate
.
Składnia
T|
evaluate
bag_unpack(
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Typ | Wymagania | opis |
---|---|---|---|
T | string |
✔️ | Dane wejściowe tabelaryczne, których kolumna Kolumna ma zostać rozpakowana. |
Kolumna | dynamic |
✔️ | Kolumna T do rozpakowania. |
OutputColumnPrefix | string |
Wspólny prefiks do dodania do wszystkich kolumn generowanych przez wtyczkę. | |
columnsConflict | string |
Kierunek rozwiązywania konfliktów kolumn. Prawidłowe wartości: error — Zapytanie generuje błąd (wartość domyślna)replace_source — Kolumna źródłowa jest zastępowanakeep_source - Kolumna źródłowa jest przechowywana |
|
ignorowanewłaściwości | dynamic |
Opcjonalny zestaw właściwości torby do zignorowania. } | |
OutputSchema | Określ nazwy i typy kolumn dla danych wyjściowych bag_unpack wtyczki. Aby uzyskać informacje o składni, zobacz Składnia schematu danych wyjściowych i aby zrozumieć implikacje, zobacz Zagadnienia dotyczące wydajności. |
Składnia schematu wyjściowego
(
Nazwakolumny:
ColumnType [,
...])
Użyj symbolu wieloznakowego *
jako pierwszego parametru, aby uwzględnić wszystkie kolumny tabeli źródłowej w danych wyjściowych w następujący sposób:
(
*
,
ColumnName:
ColumnType [,
...])
Zagadnienia dotyczące wydajności
Korzystanie z wtyczki bez elementu OutputSchema może mieć poważne konsekwencje dla wydajności w dużych zestawach danych i należy go unikać.
Udostępnienie modułu OutputSchema umożliwia aparatowi zapytań optymalizowanie wykonywania zapytań, ponieważ może określić schemat wyjściowy bez konieczności analizowania i analizowania danych wejściowych. Jest to korzystne, gdy dane wejściowe są duże lub złożone. Zapoznaj się z przykładami z wpływem na wydajność korzystania z wtyczki z elementem OutputSchema i bez zdefiniowanego elementu OutputSchema.
Zwraca
Wtyczka bag_unpack
zwraca tabelę z dowolną liczbą rekordów w postaci danych wejściowych tabelarycznych (T). Schemat tabeli jest taki sam jak schemat danych wejściowych tabelarycznych z następującymi modyfikacjami:
- Określona kolumna wejściowa (kolumna) jest usuwana.
- Nazwa każdej kolumny odpowiada nazwie każdego miejsca, opcjonalnie poprzedzonego prefiksem OutputColumnPrefix.
- Typ każdej kolumny jest typem gniazda, jeśli wszystkie wartości tego samego miejsca mają ten sam typ lub
dynamic
, jeśli wartości różnią się typem. - Schemat jest rozszerzony o dowolną liczbę kolumn, ponieważ istnieją różne gniazda w wartościach torby właściwości najwyższego poziomu T.
Uwaga
- Jeśli nie określisz parametru OutputSchema, schemat wyjściowy wtyczki będzie się różnić w zależności od wartości danych wejściowych. Wiele wykonań wtyczki z różnymi danymi wejściowymi może generować różne schematy wyjściowe.
- Jeśli określono parametr OutputSchema , wtyczka zwraca tylko kolumny zdefiniowane w składni schematu danych wyjściowych, chyba że zostanie użyta symbol wieloznaczny
*
. - Aby zwrócić wszystkie kolumny danych wejściowych i kolumn zdefiniowanych w parametrze OutputSchema, użyj symbolu wieloznakowego
*
w elemacie OutputSchema.
Reguły schematu tabelarycznego mają zastosowanie do danych wejściowych. W szczególności:
- Nazwa kolumny wyjściowej nie może być taka sama jak istniejąca kolumna w tabelarycznych danych wejściowych T, chyba że jest to kolumna do rozpakowania (kolumna). W przeciwnym razie dane wyjściowe zawierają dwie kolumny o tej samej nazwie.
- Wszystkie nazwy miejsc, jeśli są poprzedzone prefiksem OutputColumnPrefix, muszą być prawidłowe nazwy jednostek i postępować zgodnie z regułami nazewnictwa identyfikatorów.
Wtyczka ignoruje wartości null.
Przykłady
W przykładach w tej sekcji pokazano, jak używać składni, aby ułatwić rozpoczęcie pracy.
Rozwiń torbę:
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
Wyjście
Wiek | Nazwisko |
---|---|
20 | Michał |
40 | Dave |
30 | Jaśmin |
Rozwiń torbę i użyj OutputColumnPrefix
opcji , aby utworzyć nazwy kolumn z prefiksem:
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')
Wyjście
Property_Age | Property_Name |
---|---|
20 | Michał |
40 | Dave |
30 | Jaśmin |
Rozwiń torbę i użyj columnsConflict
opcji , aby rozwiązać konflikt kolumny między kolumną dynamiczną a istniejącą kolumną:
datatable(Name:string, d:dynamic)
[
'Old_name', dynamic({"Name": "John", "Age":20}),
'Old_name', dynamic({"Name": "Dave", "Age":40}),
'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='replace_source') // Use new name
Wyjście
Wiek | Nazwisko |
---|---|
20 | Michał |
40 | Dave |
30 | Jaśmin |
datatable(Name:string, d:dynamic)
[
'Old_name', dynamic({"Name": "John", "Age":20}),
'Old_name', dynamic({"Name": "Dave", "Age":40}),
'Old_name', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='keep_source') // Keep old name
Wyjście
Wiek | Nazwisko |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Rozwiń torbę i użyj ignoredProperties
opcji , aby zignorować 2 właściwości w torbie właściwości:
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20, "Address": "Address-1" }),
dynamic({"Name": "Dave", "Age":40, "Address": "Address-2"}),
dynamic({"Name": "Jasmine", "Age":30, "Address": "Address-3"}),
]
// Ignore 'Age' and 'Address' properties
| evaluate bag_unpack(d, ignoredProperties=dynamic(['Address', 'Age']))
Wyjście
Nazwisko |
---|
Michał |
Dave |
Jaśmin |
Rozwiń torbę i użyj opcji OutputSchema:
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d) : (Name:string, Age:long)
Wyjście
Nazwisko | Wiek |
---|---|
Michał | 20 |
Dave | 40 |
Jaśmin | 30 |
Rozwiń torbę za pomocą elementu OutputSchema i użyj opcji symboli wieloznacznych*
:
To zapytanie zwraca oryginalny opis miejsca i kolumny zdefiniowane w outputSchema.
datatable(d:dynamic, Description: string)
[
dynamic({"Name": "John", "Age":20, "height":180}), "Student",
dynamic({"Name": "Dave", "Age":40, "height":160}), "Teacher",
dynamic({"Name": "Jasmine", "Age":30, "height":172}), "Student",
]
| evaluate bag_unpack(d) : (*, Name:string, Age:long)
Wyjście
opis | Nazwisko | Wiek |
---|---|---|
uczniowie | Michał | 20 |
Nauczyciel | Dave | 40 |
uczniowie | Jaśmin | 30 |
Przykłady z implikacjami wydajności
Rozwiń torbę i bez zdefiniowanej wartości OutputSchema , aby porównać implikacje dotyczące wydajności:
W tym przykładzie użyto publicznie dostępnej tabeli w klastrze pomocy. W bazie danych ContosoSales istnieje tabela o nazwie SalesDynamic. Tabela zawiera dane sprzedaży i zawiera kolumnę dynamiczną o nazwie Customer_Properties.
Przykład bez schematu wyjściowego: pierwsze zapytanie nie definiuje elementu OutputSchema. Zapytanie trwa 5,84 sekundy procesora CPU i skanuje 36,39 MB danych.
SalesDynamic | evaluate bag_unpack(Customer_Properties) | summarize Sales=sum(SalesAmount) by Country, State
Przykład ze schematem danych wyjściowych: drugie zapytanie udostępnia parametr OutputSchema. Zapytanie trwa 0,45 sekund procesora CPU i skanuje 19,31 MB danych. Zapytanie nie musi analizować tabeli wejściowej, co pozwala zaoszczędzić czas przetwarzania.
SalesDynamic | evaluate bag_unpack(Customer_Properties) : (*, Country:string, State:string, City:string) | summarize Sales=sum(SalesAmount) by Country, State
Wyjście
Dane wyjściowe są takie same dla obu zapytań. Poniżej przedstawiono pierwsze 10 wierszy danych wyjściowych.
Kanada | Kolumbia Brytyjska | 56,101,083 |
---|---|---|
Wielka Brytania | Anglia | 77,288,747 |
Australia | Wiktoria | 31,242,423 |
Australia | Queensland | 27,617,822 |
Australia | Australia Południowa | 8,530,537 |
Australia | Nowa Południowa Walia | 54,765,786 |
Australia | Tasmania | 3,704,648 |
Kanada | Alberta | 375,061 |
Kanada | Ontario | 38,282 |
Stany Zjednoczone | Waszyngton | 80,544,870 |
...\ | ...\ | ...\ |
Powiązana zawartość
- parse_json funkcji
- operator mv-expand