Freigeben über


Plug-In „bag_unpack“

Gilt für: ✅Microsoft Fabric✅Azure Data Explorer

Das bag_unpack Plug-In entpackt eine einzelne Spalte vom Typ dynamic, indem jeder Eigenschaftenbehälter auf oberster Ebene als Spalte behandelt wird. Das Plug-In wird mit dem evaluate Operator aufgerufen.

Syntax

T | bag_unpack( evaluate Column [, OutputColumnPrefix ] [, columnsConflict ] [, ignoredProperties ] ) [: OutputSchema]

Erfahren Sie mehr über Syntaxkonventionen.

Parameter

Name Type Erforderlich Beschreibung
T string ✔️ Die tabellarische Eingabe, deren Spaltenspalte entpackt werden soll.
Spalte dynamic ✔️ Die Spalte von T , die entpackt werden soll.
OutputColumnPrefix string Ein allgemeines Präfix, das allen Spalten hinzugefügt werden soll, die vom Plug-In erstellt werden.
columnsConflict string Die Richtung für die Konfliktauflösung der Spalte. Gültige Werte:
error - Abfrage erzeugt einen Fehler (Standard)
replace_source - Quellspalte wird ersetzt
keep_source - Quellspalte wird beibehalten
ignoredProperties dynamic Ein optionaler Satz von Bag-Eigenschaften, die ignoriert werden sollen. }
OutputSchema Die Namen und Typen für die erwarteten Spalten der bag_unpack Plug-In-Ausgabe. Wenn Sie das erwartete Schema angeben, wird die Abfrageausführung optimiert, indem sie die tatsächliche Abfrage nicht zuerst ausführen muss, um das Schema zu untersuchen. Informationen zur Syntax finden Sie unter Ausgabeschemasyntax.

Ausgabeschemasyntax

(ColumnName : ColumnType [, ...])

Um alle Spalten der Eingabetabelle zur Plug-In-Ausgabe hinzuzufügen, verwenden Sie einen Wildcard * als ersten Parameter wie folgt:

(* , ColumnName : ColumnType [, ...])

Gibt zurück

Das bag_unpack Plug-In gibt eine Tabelle mit so vielen Datensätzen wie die tabellarische Eingabe (T) zurück. Das Schema der Tabelle entspricht dem Schema der tabellarischen Eingabe mit den folgenden Änderungen:

  • Die angegebene Eingabespalte (Spalte) wird entfernt.
  • Das Schema wird um so viele Spalten erweitert, wie es unterschiedliche Steckplätze in den Werten des Eigenschaftenbehälters der obersten Ebene von T gibt. Der Name jeder Spalte entspricht dem Namen jedes Steckplatzes, optional präfix von OutputColumnPrefix. Sein Typ ist entweder der Typ des Steckplatzes, wenn alle Werte desselben Steckplatzes denselben Typ aufweisen, oder dynamic, wenn sich die Werte im Typ unterscheiden.

Hinweis

  • Wenn das OutputSchema nicht angegeben ist, variiert das Ausgabeschema des Plug-Ins entsprechend den Eingabedatenwerten. Daher können mehrere Ausführungen des Plug-Ins mit unterschiedlichen Dateneingaben verschiedene Ausgabeschemas erzeugen.

  • Die Eingabedaten an das Plug-In müssen so sein, dass das Ausgabeschema alle Regeln für ein tabellarisches Schema befolgt. Dies gilt insbesondere für:

    • Ein Ausgabespaltenname kann nicht mit einer vorhandenen Spalte in der tabellarischen Eingabe T identisch sein, es sei denn, es handelt sich um die Spalte, die entpackt werden soll (Spalte), da dies zwei Spalten mit demselben Namen erzeugt.

    • Alle Slotnamen müssen bei präfix "OutputColumnPrefix" gültige Entitätsnamen sein und den Benennungsregeln für Bezeichner entsprechen.

  • NULL-Werte werden ignoriert.

Beispiele

Erweitern einer Tasche

datatable(d:dynamic)
[
    dynamic({"Name": "John", "Age":20}),
    dynamic({"Name": "Dave", "Age":40}),
    dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)

Output

Alter Name
20 John
40 Dave
30 Jasmin

Erweitern einer Tasche mit OutputColumnPrefix

Erweitern Sie einen Beutel, und verwenden Sie die OutputColumnPrefix Option, um Spaltennamen zu erstellen, die mit dem Präfix "Property_" beginnen.

datatable(d:dynamic)
[
    dynamic({"Name": "John", "Age":20}),
    dynamic({"Name": "Dave", "Age":40}),
    dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')

Output

Property_Age Property_Name
20 John
40 Dave
30 Jasmin

Erweitern einer Tasche mit SpaltenConflict

Erweitern Sie einen Beutel, und verwenden Sie die columnsConflict Option, um Konflikte zwischen vorhandenen Spalten und Spalten zu lösen, die vom bag_unpack() Operator erstellt werden.

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

Output

Alter 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

Output

Alter Name
20 Old_name
40 Old_name
30 Old_name

Erweitern einer Tasche mit ignoredProperties

Erweitern Sie eine Tasche, und verwenden Sie die ignoredProperties Option, bestimmte Eigenschaften im Eigenschaftenbehälter zu ignorieren.

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']))

Output

Name
John
Dave
Jasmin

Erweitern einer Tasche mit einem abfragedefinierten OutputSchema

Erweitern Sie einen Beutel, und verwenden Sie die OutputSchema Option, um die Auswertung verschiedener Optimierungen vor dem Ausführen der tatsächlichen Abfrage zu ermöglichen.

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)

Output

Name Age
John 20
Dave 40
Jasmin 30

Erweitern Sie einen Beutel, und verwenden Sie die OutputSchema Option, um die Auswertung verschiedener Optimierungen vor dem Ausführen der tatsächlichen Abfrage zu ermöglichen. Verwenden Sie einen Wildcard, * um alle Spalten der Eingabetabelle zurückzugeben.

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)

Output

Beschreibung Name Age
Kursteilnehmer John 20
Lehrkraft Dave 40
Kursteilnehmer Jasmin 30