Dela via


bag_unpack plugin-program

Gäller för: ✅Microsoft FabricAzure Data Explorer

Plugin-programmet bag_unpack packar upp en enda kolumn av typen dynamicgenom att behandla varje egenskapsväska på översta nivån som en kolumn. Plugin-programmet anropas med operatorn evaluate.

Syntax

T|evaluatebag_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ätts
keep_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