bag_unpack, wtyczka
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 za pomocą evaluate
operatora .
Składnia
T|
evaluate
bag_unpack(
Kolumna [,
OutputColumnPrefix ] [,
columnsConflict ] [ignoredProperties ] )
[:
,
OutputSchema]
Dowiedz się więcej o konwencjach składniowych.
Parametry
Nazwa | Typ | Wymagane | 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, który ma zostać dodany do wszystkich kolumn utworzonych 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, które mają być ignorowane. } | |
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
(
Columnname:
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 jako dane wejściowe tabelaryczne (T). Schemat tabeli jest taki sam jak schemat danych wejściowych tabelarycznych z następującymi modyfikacjami:
- Określona kolumna wejściowa (kolumna) zostanie usunięta.
- 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 poprzedzonej prefiksem OutputColumnPrefix. Jego typ to typ gniazda, 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 generować różne schematy wyjściowe.
Uwaga
Dane wejściowe w 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 zostać rozpakowana (kolumna), ponieważ spowoduje to utworzenie dwóch kolumn o tej samej nazwie.
Wszystkie nazwy miejsc, gdy są poprzedzone prefiksem OutputColumnPrefix, muszą być prawidłowymi nazwami jednostek i postępować zgodnie z regułami nazewnictwa identyfikatorów.
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)
Dane wyjściowe
Wiek | Nazwa |
---|---|
20 | Michał |
40 | Dave |
30 | Jasmine |
Rozwijanie torby przy użyciu 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_')
Dane wyjściowe
Property_Age | Property_name |
---|---|
20 | Michał |
40 | Dave |
30 | Jasmine |
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
Dane wyjściowe
Wiek | Nazwa |
---|---|
20 | Michał |
40 | Dave |
30 | Jasmine |
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
Dane wyjściowe
Wiek | Nazwa |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Rozszerzanie torby z ignorowanymiwł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']))
Dane wyjściowe
Nazwa |
---|
Michał |
Dave |
Jasmine |
Rozszerzanie torby przy użyciu zdefiniowanej przez zapytanie danych 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)
Dane wyjściowe
Nazwa | Wiek |
---|---|
Michał | 20 |
Dave | 40 |
Jasmine | 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)
Dane wyjściowe
Opis | Nazwa | Wiek |
---|---|---|
Uczeń | Michał | 20 |
Nauczyciel | Dave | 40 |
Uczeń | Jasmine | 30 |
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla