bag_unpack-plugin-program
Plugin-programmet bag_unpack
packar upp en enda kolumn av typen dynamic
genom att behandla varje egenskapsuppsättning på översta nivån som en kolumn. Plugin-programmet anropas med operatorn evaluate
.
Syntax
T|
evaluate
bag_unpack(
Kolumn [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Obligatorisk | Beskrivning |
---|---|---|---|
T | string |
✔️ | Tabellindata vars kolumnkolumn ska packas upp. |
Kolumn | dynamic |
✔️ | Kolumnen i T som ska packas upp. |
OutputColumnPrefix | string |
Ett vanligt prefix att lägga till i alla kolumner som skapas av plugin-programmet. | |
columnsConflict | string |
Riktningen för konfliktlösning för kolumner. Giltiga värden:error – Frågan genererar ett fel (standard)replace_source – Källkolumnen ersättskeep_source – Källkolumnen behålls |
|
ignoredProperties | dynamic |
En valfri uppsättning bag-egenskaper som ska ignoreras. } | |
OutputSchema | Namn och typer för de förväntade kolumnerna i plugin-programmets bag_unpack 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-programmets utdata använder du ett jokertecken *
som den första parametern enligt följande:
(
*
,
Columnname:
ColumnType [,
...] )
Returer
Plugin-programmet bag_unpack
returnerar en tabell med så många poster som dess tabellindata (T). Schemat för tabellen är samma som schemat för dess tabellindata med följande ändringar:
- Den angivna indatakolumnen (kolumn) tas bort.
- Schemat utökas med så många kolumner som det finns distinkta platser i egenskapsuppsättningsvärdena på den översta nivån för T. Namnet på varje kolumn motsvarar namnet på varje fack, eventuellt prefixet outputColumnPrefix. Dess typ är antingen platsens typ, om alla värden för samma fack har samma typ, eller
dynamic
, om värdena skiljer sig åt i typ.
Anteckning
Om OutputSchema inte anges varierar plugin-programmets utdataschema beroende på indatavärdena. Därför kan flera körningar av plugin-programmet med olika indata generera olika utdatascheman.
Anteckning
Indata till plugin-programmet måste vara sådana att utdataschemat följer alla regler för ett tabellschema. Framför allt:
Ett kolumnnamn för utdata får 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, som föregås av OutputColumnPrefix, måste vara giltiga entitetsnamn och följa namngivningsreglerna för identifierare.
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)
Resultat
Ålder | Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmin |
Expandera en påse med OutputColumnPrefix
Expandera en påse och använd OutputColumnPrefix
alternativet 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_')
Resultat
Property_Age | Property_Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmin |
Expandera en påse med columnsConflict
Expandera en påse och använd columnsConflict
alternativet för att lösa konflikter mellan befintliga kolumner och kolumner som genereras av operatorn 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
Resultat
Ålder | Name |
---|---|
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
Resultat
Ålder | Name |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Expandera en påse med ignoredProperties
Expandera en påse och använd ignoredProperties
alternativet för att ignorera vissa egenskaper i egenskapsuppsättningen.
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']))
Resultat
Name |
---|
John |
Dave |
Jasmin |
Expandera en påse med ett frågedefinierat OutputSchema
Expandera en påse och använd OutputSchema
alternativet för att tillåta att olika optimeringar utvärderas innan du kör den faktiska frågan.
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)
Resultat
Name | Ålder |
---|---|
John | 20 |
Dave | 40 |
Jasmin | 30 |
Expandera en påse och använd OutputSchema
alternativet för att tillåta att olika optimeringar utvärderas innan du kör den faktiska frågan. 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)
Resultat
Beskrivning | Name | Ålder |
---|---|---|
Student | John | 20 |
Lärare | Dave | 40 |
Student | Jasmin | 30 |
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för