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 ersetztkeep_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 |