bag_unpack, wtyczka
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 |
bag_unpack(
evaluate
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Dowiedz się więcej na temat konwencji składni.
Parametry
Nazwisko | Type | 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 | Nazwy i typy oczekiwanych kolumn danych wyjściowych bag_unpack wtyczki. Określenie oczekiwanego schematu optymalizuje wykonywanie zapytań, nie trzeba najpierw uruchamiać rzeczywistego zapytania w celu eksplorowania schematu. Aby uzyskać informacje o składni, zobacz Składnia schematu wyjściowego. |
Składnia schematu wyjściowego
(
Nazwakolumny :
ColumnType [,
...])
Aby dodać wszystkie kolumny tabeli wejściowej do danych wyjściowych wtyczki, użyj symbolu wieloznakowego *
jako pierwszego parametru w następujący sposób:
(
*
,
ColumnName :
ColumnType [,
...])
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.
- Schemat jest rozszerzony o dowolną liczbę kolumn, ponieważ istnieją różne gniazda w wartościach torby właściwości najwyższego poziomu T. Nazwa każdej kolumny odpowiada nazwie każdego miejsca, opcjonalnie poprzedzonego prefiksem OutputColumnPrefix. Jego typ jest typem miejsca, jeśli wszystkie wartości tego samego miejsca mają ten sam typ lub
dynamic
, jeśli wartości różnią się typem.
Uwaga
Jeśli parametr OutputSchema nie jest określony, schemat wyjściowy wtyczki różni się w zależności od wartości danych wejściowych. W związku z tym wiele wykonań wtyczki przy użyciu różnych danych wejściowych może spowodować wygenerowanie innego schematu wyjściowego.
Dane wejściowe do wtyczki muszą być takie, że schemat wyjściowy jest zgodny ze wszystkimi regułami schematu tabelarycznego. 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 kolumna ma być rozpakowana (kolumna), ponieważ spowoduje to utworzenie dwóch kolumn 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.
Wartości null są ignorowane.
Przykłady
Rozwijanie torby
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 |
Rozwijanie torby za pomocą elementu OutputColumnPrefix
Rozwiń torbę i użyj OutputColumnPrefix
opcji , aby utworzyć nazwy kolumn rozpoczynające się od prefiksu "Property_".
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 |
Rozwijanie torby z kolumnamiConflict
Rozwiń torbę i użyj columnsConflict
opcji , aby rozwiązać konflikty między istniejącymi kolumnami i kolumnami utworzonymi przez bag_unpack()
operatora.
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 |
Rozwijanie torby z ignorowanymi właściwościami
Rozwiń torbę i użyj ignoredProperties
opcji , aby zignorować niektóre 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 |
Rozwijanie torby za pomocą zdefiniowanej przez zapytanie outputSchema
Rozwiń torbę i użyj OutputSchema
opcji , aby umożliwić ocenę różnych optymalizacji przed uruchomieniem rzeczywistego zapytania.
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ę i użyj OutputSchema
opcji , aby umożliwić ocenę różnych optymalizacji przed uruchomieniem rzeczywistego zapytania. Użyj symbolu wieloznakowego *
, aby zwrócić wszystkie kolumny tabeli wejściowej.
datatable(d:dynamic, Description: string)
[
dynamic({"Name": "John", "Age":20}), "Student",
dynamic({"Name": "Dave", "Age":40}), "Teacher",
dynamic({"Name": "Jasmine", "Age":30}), "Student",
]
| evaluate bag_unpack(d) : (*, Name:string, Age:long)
Wyjście
opis | Nazwa/nazwisko | Wiek |
---|---|---|
Uczeń | Michał | 20 |
Teacher | Dave | 40 |
Uczeń | Jaśmin | 30 |