bag_unpack plugin-program
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer
Plugin-programmet bag_unpack
packar upp en enda kolumn av typen dynamic
genom att behandla varje egenskapsväska på översta nivån som en kolumn. Plugin-programmet anropas med operatorn evaluate
.
Syntax
T|
evaluate
bag_unpack(
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Krävs | Beskrivning |
---|---|---|---|
T | string |
✔️ | Tabellindata vars kolumn Kolumn ska packas upp. |
kolumn | dynamic |
✔️ | Kolumnen i T att packa upp. |
OutputColumnPrefix | string |
Ett vanligt prefix att lägga till i alla kolumner som skapas av plugin-programmet. | |
kolumnerKonfiguration | string |
Riktningen för kolumnkonfliktslösning. Giltiga värden: error – Frågan genererar ett fel (standard)replace_source – Källkolumnen ersättskeep_source – Källkolumnen behålls |
|
ignoredEgenskaper | dynamic |
En valfri uppsättning bag-egenskaper som ska ignoreras. } | |
OutputSchema | Namn och typer för de förväntade kolumnerna i bag_unpack plugin-utdata. Om du anger det förväntade schemat optimeras frågekörningen genom att du inte först behöver köra den faktiska frågan för att utforska schemat. Syntaxinformation finns i Schemasyntax för utdata. |
Schemasyntax för utdata
(
ColumnName:
ColumnType [,
...] )
Om du vill lägga till alla kolumner i indatatabellen i plugin-utdata använder du ett jokertecken *
som den första parametern enligt följande:
(
*
,
ColumnName:
ColumnType [,
...] )
Returnerar
Plugin-programmet bag_unpack
returnerar en tabell med lika många poster som tabellindata (T). Schemat för tabellen är samma som schemat för dess tabellindata med följande ändringar:
- Den angivna indatakolumnen (Column) tas bort.
- Schemat utökas med så många kolumner som det finns distinkta platser i egenskapspåsevärdena på den översta nivån för T-. Namnet på varje kolumn motsvarar namnet på varje fack, eventuellt prefixet av OutputColumnPrefix. Dess typ är antingen platsens typ, om alla värden i samma fack har samma typ, eller
dynamic
, om värdena skiljer sig åt i typ.
Not
Om OutputSchema inte har angetts varierar plugin-programmets utdataschema enligt indatavärdena. Därför kan flera körningar av plugin-programmet med olika dataindata generera olika utdatascheman.
Indata till plugin-programmet måste vara sådana att utdataschemat följer alla regler för ett tabellschema. I synnerhet:
Ett namn på utdatakolumnen kan inte vara samma som en befintlig kolumn i tabellindata T, såvida det inte är kolumnen som ska packas upp (Kolumn), eftersom det ger två kolumner med samma namn.
Alla facknamn, när de föregås av OutputColumnPrefix, måste vara giltiga entitetsnamn och följa namngivningsreglerna för identifierare.
Null-värden ignoreras.
Exempel
Expandera en påse
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
utdata
Ålder | Namn |
---|---|
20 | John |
40 | Dave |
30 | Jasmin |
Expandera en påse med OutputColumnPrefix
Expandera en påse och använd alternativet OutputColumnPrefix
för att skapa kolumnnamn som börjar med prefixet "Property_".
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')
utdata
Property_Age | Property_Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmin |
Expandera en påse med kolumnerKonfiguration
Expandera en påse och använd alternativet columnsConflict
för att lösa konflikter mellan befintliga kolumner och kolumner som skapas av bag_unpack()
-operatorn.
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
utdata
Ålder | Namn |
---|---|
20 | John |
40 | Dave |
30 | Jasmin |
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
utdata
Ålder | Namn |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Expandera en påse med ignoredProperties
Expandera en påse och använd alternativet ignoredProperties
för att ignorera vissa egenskaper i egenskapsväskan.
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']))
utdata
Namn |
---|
John |
Dave |
Jasmin |
Expandera en påse med ett frågedefinierat OutputSchema
Expandera en påse och använd alternativet OutputSchema
för att tillåta att olika optimeringar utvärderas innan den faktiska frågan körs.
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)
utdata
Namn | Ålder |
---|---|
John | 20 |
Dave | 40 |
Jasmin | 30 |
Expandera en påse och använd alternativet OutputSchema
för att tillåta att olika optimeringar utvärderas innan den faktiska frågan körs. Använd ett jokertecken *
för att returnera alla kolumner i indatatabellen.
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)
utdata
Beskrivning | Namn | Ålder |
---|---|---|
Student | John | 20 |
Lärare | Dave | 40 |
Student | Jasmin | 30 |