Modul plug-in bag_unpack
Modul bag_unpack
plug-in rozbalí jeden sloupec typu dynamic
tak, že každý slot kontejneru vlastností nejvyšší úrovně považuje za sloupec. Modul plug-in se vyvolá pomocí operátoru evaluate
.
Syntax
T|
evaluate
bag_unpack(
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Přečtěte si další informace o konvencích syntaxe.
Parametry
Název | Typ | Vyžadováno | Popis |
---|---|---|---|
T | string |
✔️ | Tabulkový vstup, jehož sloupec Column má být rozbalen. |
Sloupec | dynamic |
✔️ | Sloupec T , který chcete rozbalit. |
OutputColumnPrefix | string |
Společná předpona, která se přidá ke všem sloupcům vytvořeným modulem plug-in. | |
columnsConflict | string |
Směr řešení konfliktů sloupců. Platné hodnoty:error – Dotaz vygeneruje chybu (výchozí)replace_source - Zdrojový sloupec je nahrazen.keep_source - Zdrojový sloupec je zachován. |
|
ignoredVlastnosti | dynamic |
Volitelná sada vlastností bag, které se mají ignorovat. } | |
OutputSchema | Názvy a typy očekávaných sloupců výstupu modulu plug-in bag_unpack Zadání očekávaného schématu optimalizuje provádění dotazů, protože není nutné nejprve spustit skutečný dotaz, aby se schéma prozkoumalo. Informace o syntaxi najdete v tématu Syntaxe výstupního schématu. |
Syntaxe výstupního schématu
(
Columnname:
Typ sloupce [,
...] )
Pokud chcete do výstupu modulu plug-in přidat všechny sloupce vstupní tabulky, použijte jako první parametr zástupný *
znak, a to následujícím způsobem:
(
*
,
Columnname:
Typ sloupce [,
...] )
Návraty
Modul plug-in bag_unpack
vrátí tabulku s tolika záznamy, kolik má tabulkový vstup (T). Schéma tabulky je stejné jako schéma jejího tabulkového vstupu s následujícími úpravami:
- Zadaný vstupní sloupec (Column) se odebere.
- Schéma je rozšířeno o tolik sloupců, kolik různých slotů v 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ší typem.
Poznámka
Pokud není zadán OutputSchema , výstupní schéma modulu plug-in se liší podle hodnot vstupních dat. Proto více spuštění modulu plug-in s různými datovými vstupy může vytvořit odlišné výstupní schéma.
Poznámka
Vstupní data modulu plug-in musí být taková, aby výstupní schéma postupovat podle všech pravidel 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 to není sloupec, který se má rozbalit (Column), protože vytvoří dva sloupce se stejným názvem.
Všechny názvy slotů, které mají předponu OutputColumnPrefix, musí být platné názvy entit a musí dodržovat pravidla pojmenování identifikátorů.
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 | Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmine |
Rozbalení tašky pomocí OutputColumnPrefix
Rozbalte tašku OutputColumnPrefix
a pomocí možnosti vytvořte 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 | Jasmine |
Rozbalení tašky pomocí sloupcůKonflikt
Rozbalte kontejner a pomocí columnsConflict
možnosti vyřešte 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 | Name |
---|---|
20 | John |
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
Výstup
Věk | Name |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Rozbalení tašky pomocí ignoredVlastnosti
Rozbalte kontejner 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
Name |
---|
John |
Dave |
Jasmine |
Rozšíření tašky s využitím outputSchema definovaného dotazem
Rozbalte tašku OutputSchema
a pomocí možnosti povolte vyhodnocení různých optimalizací před spuštěním vlastního dotazu.
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
Name | Věk |
---|---|
John | 20 |
Dave | 40 |
Jasmine | 30 |
Rozbalte tašku OutputSchema
a pomocí možnosti povolte vyhodnocení různých optimalizací před spuštěním vlastního dotazu. 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 | Název | Věk |
---|---|---|
Student | John | 20 |
Učitel | Dave | 40 |
Student | Jasmine | 30 |
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro