Modul plug-in bag_unpack
Platí pro: ✅Microsoft Fabric✅Azure Data Explorer
Modul bag_unpack
plug-in rozbalí jeden sloupec typu dynamic
, tím, že zachází s jednotlivými kontejnery na nejvyšší úrovni kontejneru jako se sloupcem. Modul plug-in se vyvolá pomocí operátoru evaluate
.
Syntaxe
T |
bag_unpack(
evaluate
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Type | Požadováno | Popis |
---|---|---|---|
T | string |
✔️ | Tabulkový vstup, jehož sloupec Sloupec se má rozbalit. |
Sloupec | dynamic |
✔️ | Sloupec T k rozbalení. |
OutputColumnPrefix | string |
Společná předpona pro přidání do všech sloupců vytvořených modulem plug-in. | |
columnsConflict | string |
Směr řešení konfliktů sloupců. Platné hodnoty: error – Dotaz vytvoří chybu (výchozí)replace_source - Zdrojový sloupec se nahradí.keep_source – Zdrojový sloupec se uchovává. |
|
ignoredProperties | dynamic |
Volitelná sada vlastností tašky, které se mají ignorovat. } | |
OutputSchema | Názvy a typy očekávaných sloupců výstupu bag_unpack modulu plug-in. Zadání očekávaného schématu optimalizuje provádění dotazů tím, že nemusí nejprve spustit skutečný dotaz, aby bylo možné schéma prozkoumat. Informace o syntaxi naleznete v tématu Syntaxe výstupního schématu. |
Syntaxe výstupního schématu
(
ColumnName :
ColumnType [,
...])
Pokud chcete do výstupu modulu plug-in přidat všechny sloupce vstupní tabulky, použijte jako první parametr zástupný znak *
:
(
*
,
ColumnName :
ColumnType [,
...])
Návraty
Modul bag_unpack
plug-in vrátí tabulku s tolika záznamy, kolik má tabulkový vstup (T). Schéma tabulky je stejné jako schéma tabulkového vstupu s následujícími úpravami:
- Zadaný vstupní sloupec (Sloupec) se odebere.
- Schéma je rozšířeno o tolik sloupců, kolik existuje jedinečných slotů v hodnotách kontejneru vlastností nejvyšší úrovně T. Název každého sloupce odpovídá názvu každého slotu, volitelně s předponou OutputColumnPrefix. Jeho typ je buď typ slotu, pokud všechny hodnoty stejného slotu mají stejný typ, nebo
dynamic
, pokud se hodnoty liší v typu.
Poznámka:
Pokud není zadaný outputSchema, výstupní schéma modulu plug-in se liší podle vstupních hodnot dat. Proto může více spuštění modulu plug-in pomocí různých datových vstupů vytvořit jiné výstupní schéma.
Vstupní data modulu plug-in musí být taková, že výstupní schéma dodržuje všechna pravidla pro tabulkové schéma. Zejména jde o toto:
Název výstupního sloupce nemůže být stejný jako existující sloupec v tabulkovém vstupu T, pokud se nejedná o sloupec, který se má rozbalit (Sloupec), protože vytvoří dva sloupce se stejným názvem.
Všechny názvy slotů, pokud je předpona OutputColumnPrefix, musí být platné názvy entit a dodržovat pravidla pojmenování identifikátoru.
Hodnoty null se ignorují.
Příklady
Rozbalení tašky
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
Výstup
Věk | Název |
---|---|
20 | John |
40 | Dave |
30 | Jasmín |
Rozbalení tašky pomocí OutputColumnPrefixu
Rozbalte tašku a použijte OutputColumnPrefix
možnost vytvořit názvy sloupců, které začínají předponou "Property_".
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')
Výstup
Property_Age | Property_Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmín |
Rozbalení tašky pomocí sloupcůConflict
Rozbalte tašku a použijte columnsConflict
možnost vyřešit konflikty mezi existujícími sloupci a sloupci vytvořenými operátorem bag_unpack()
.
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
Výstup
Věk | Název |
---|---|
20 | John |
40 | Dave |
30 | Jasmín |
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
Výstup
Věk | Název |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Rozbalení tašky s ignorovanými funkcemiProperties
Rozbalte tašku a použijte ignoredProperties
možnost ignorovat určité vlastnosti v kontejneru vlastností.
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']))
Výstup
Název |
---|
John |
Dave |
Jasmín |
Rozšíření tašky pomocí dotazu definovaného outputSchema
Rozbalte tašku a použijte OutputSchema
možnost, aby se před spuštěním skutečného dotazu vyhodnotily různé optimalizace.
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)
Výstup
Název | Věk |
---|---|
John | 20 |
Dave | 40 |
Jasmín | 30 |
Rozbalte tašku a použijte OutputSchema
možnost, aby se před spuštěním skutečného dotazu vyhodnotily různé optimalizace. Pomocí zástupného znaku *
můžete vrátit všechny sloupce vstupní tabulky.
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)
Výstup
Popis | Name | Věk |
---|---|---|
Student | John | 20 |
Teacher | Dave | 40 |
Student | Jasmín | 30 |