Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Přepněte služby pomocí rozevíracího seznamu Verze . Přečtěte si další informace o navigaci.
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|evaluatebag_unpack( Column [,OutputColumnPrefix ] [,columnsConflict ] [,ignoredProperties ] ) [:OutputSchema]
Přečtěte si další informace o konvencích syntaxe.
Parametry
| Název | Typ | 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 | Zadejte názvy a typy sloupců pro výstup modulu plug-in bag_unpack . Informace o syntaxi najdete v tématu Syntaxe schématu výstupu a vysvětlení dopadů najdete v tématu Aspekty výkonu. |
Syntaxe výstupního schématu
(
ColumnName:ColumnType [, ...])
Jako první parametr použijte zástupný znak * , který do výstupu zahrne všechny sloupce zdrojové tabulky, a to následujícím způsobem:
(
*
,
ColumnName:ColumnType [, ...])
Důležité informace o výkonu
Použití modulu plug-in bez outputSchema může mít závažný dopad na výkon u velkých datových sad a mělo by se jim vyhnout.
Poskytnutí outputSchema umožňuje dotazovacímu stroji optimalizovat provádění dotazu, protože může určit výstupní schéma, aniž by bylo nutné analyzovat a analyzovat vstupní data. VýstupSchema je výhodný, když jsou vstupní data velká nebo složitá. Podívejte se na příklady s dopadem na výkon používání modulu plug-in s definovaným outputSchema a bez definovaného výstupu.
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.
- Název každého sloupce odpovídá názvu každého slotu, volitelně s předponou OutputColumnPrefix.
- Typ každého sloupce je buď typ slotu, pokud všechny hodnoty stejného slotu mají stejný typ, nebo
dynamic, pokud se hodnoty liší v typu. - Schéma je rozšířeno o tolik sloupců, kolik existuje jedinečných slotů v hodnotách kontejneru vlastností nejvyšší úrovně T.
Poznámka:
- Pokud nezadáte OutputSchema, schéma výstupu modulu plug-in se liší v závislosti na vstupních hodnotách dat. Několik spuštění modulu plug-in s různými datovými vstupy může vytvořit různá výstupní schémata.
- Pokud je zadán outputSchema , modul plug-in vrátí pouze sloupce definované v syntaxi výstupního schématu, pokud se nepoužije zástupný znak
*. - Pokud chcete vrátit všechny sloupce vstupních dat a sloupce definované v outputSchema, použijte zástupný znak
*v outputSchema.
Pravidla tabulkového schématu se vztahují na vstupní data. 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). V opačném případě výstup obsahuje 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.
Modul plug-in ignoruje hodnoty null.
Příklady
Příklady v této části ukazují, jak používat syntaxi, která vám pomůže začít.
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
Age |
Name |
|---|---|
| 20 | John |
| 40 | Dave |
| 30 | Jasmín |
Rozbalte tašku a použijte OutputColumnPrefix možnost vytvořit názvy sloupců s předponou:
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 |
Rozbalte tašku a pomocí columnsConflict možnosti vyřešte konflikt mezi dynamickým sloupcem a existujícím sloupcem:
datatable(Name:string, d:dynamic)
[
'James', dynamic({"Name": "John", "Age":20}),
'David', dynamic({ "Age":40}),
'Emily', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='replace_source') // Replace old column Name by new column
Výstup
Name |
Age |
|---|---|
| John | 20 |
| 40 | |
| Jasmín | 30 |
datatable(Name:string, d:dynamic)
[
'James', dynamic({"Name": "John", "Age":20}),
'David', dynamic({"Name": "Dave", "Age":40}),
'Emily', dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, columnsConflict='keep_source') // Keep old column Name
Výstup
Name |
Age |
|---|---|
| Jakub | 20 |
| David | 40 |
| Emílie | 30 |
Rozbalte tašku a použijte ignoredProperties možnost ignorovat 2 z vlastností v pytli 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 |
| Jasmín |
Rozbalte tašku a použijte možnost OutputSchema:
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({ "Name": "Dave", "Height": 170, "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
Výstup
Age |
Height |
Name |
|---|---|---|
| 20 | John | |
| 40 | 170 | Dave |
| 30 | Jasmín |
Rozbalte tašku pomocí outputSchema a použijte možnost se zástupným znakem*:
Tento dotaz vrátí původní popis slotu a sloupce definované v 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)
Výstup
| Popis | Name |
Age |
|---|---|---|
| Studenti | John | 20 |
| Učitel | Dave | 40 |
| Studenti | Jasmín | 30 |
Příklady s dopadem na výkon
Rozbalte tašku s definovaným výstupem a bez definovaného výstupu , abyste mohli porovnat dopad na výkon:
Tento příklad používá veřejně dostupnou tabulku v clusteru nápovědy. V databázi ContosoSales je tabulka s názvem SalesDynamic. Tabulka obsahuje data o prodeji a obsahuje dynamický sloupec s názvem Customer_Properties.
Příklad bez výstupního schématu: První dotaz nedefinuje outputSchema. Dotaz trvá 5,84 sekund procesoru a prohledá 36,39 MB dat.
SalesDynamic | evaluate bag_unpack(Customer_Properties) | summarize Sales=sum(SalesAmount) by Country, StatePříklad s výstupním schématem: Druhý dotaz poskytuje outputSchema. Dotaz trvá 0,45 sekund procesoru a prohledá 19,31 MB dat. Dotaz nemusí analyzovat vstupní tabulku, což šetří čas zpracování.
SalesDynamic | evaluate bag_unpack(Customer_Properties) : (*, Country:string, State:string, City:string) | summarize Sales=sum(SalesAmount) by Country, State
Výstup
Výstup je stejný pro oba dotazy. Níže je zobrazeno prvních 10 řádků výstupu.
Country/Region |
State |
Sales |
|---|---|---|
| Kanada | Britská Kolumbie | 56,101,083 |
| Spojené království | Anglie | 77,288,747 |
| Austrálie | Viktorie | 31,242,423 |
| Austrálie | Queensland | 27,617,822 |
| Austrálie | Jižní Austrálie | 8,530,537 |
| Austrálie | Nový Jižní Wales | 54,765,786 |
| Austrálie | Tasmánie | 3,704,648 |
| Kanada | Alberta | 375,061 |
| Kanada | Ontario | 38,282 |
| USA | Washingtonský | 80,544,870 |
| ... | ... | ... |