Plug-In „bag_unpack“
Das bag_unpack
Plug-In entpackt eine einzelne Spalte des Typs dynamic
, indem jeder Eigenschaftenbehälter auf oberster Ebene als Spalte behandelt wird. Das Plug-In wird mit dem evaluate
Operator aufgerufen.
Syntax
T|
evaluate
bag_unpack(
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Erfahren Sie mehr über Syntaxkonventionen.
Parameter
Name | Typ | Erforderlich | Beschreibung |
---|---|---|---|
T | string |
✔️ | Die tabellarische Eingabe, deren Spalte Spalte entpackt werden soll. |
Spalte | dynamic |
✔️ | Die Spalte von T , die entpackt werden soll. |
OutputColumnPrefix | string |
Ein allgemeines Präfix zum Hinzufügen zu allen Spalten, die vom Plug-In erstellt werden. | |
columnsConflict | string |
Die Richtung für die Spaltenkonfliktlösung. Gültige Werte:error - Abfrage erzeugt einen Fehler (Standard)replace_source - Quellspalte wird ersetztkeep_source - Quellspalte wird beibehalten |
|
ignoredProperties | dynamic |
Ein optionaler Satz von Beuteleigenschaften, 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, da die eigentliche Abfrage nicht zuerst ausgeführt werden muss, um das Schema zu untersuchen. Syntaxinformationen finden Sie unter Ausgabeschemasyntax. |
Ausgabeschemasyntax
(
Columnname:
ColumnType [,
...] )
Um der Plug-In-Ausgabe alle Spalten der Eingabetabelle hinzuzufügen, verwenden Sie wie folgt einen Feldhalter *
als ersten Parameter:
(
*
,
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 Slots in den Werten des Obersten Eigenschaftenbehälters von T gibt. Der Name jeder Spalte entspricht dem Namen der einzelnen Steckplätze, optional mit dem Präfix OutputColumnPrefix. Sein Typ ist entweder der Typ des Slot, wenn alle Werte desselben Slot denselben Typ haben, oder
dynamic
, wenn sich die Werte im Typ unterscheiden.
Hinweis
Wenn das OutputSchema nicht angegeben wird, variiert das Ausgabeschema des Plug-Ins je nach den Eingabedatenwerten. Daher können mehrere Ausführungen des Plug-Ins mit unterschiedlichen Dateneingaben ein anderes Ausgabeschema erzeugen.
Hinweis
Die Eingabedaten für das Plug-In müssen so sein, dass das Ausgabeschema allen Regeln für ein tabellarisches Schema folgt. 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 dadurch zwei Spalten mit demselben Namen erzeugt werden.
Alle Slotnamen müssen gültige Entitätsnamen sein und den Benennungsregeln für Bezeichner entsprechen, wenn sie mit OutputColumnPrefix vorangestellt werden.
Beispiele
Erweitern eines Beutels
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
Ausgabe
Age | Name |
---|---|
20 | John |
40 | David |
30 | Jasmine |
Erweitern eines Beutels 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_')
Ausgabe
Property_Age | Property_Name |
---|---|
20 | John |
40 | David |
30 | Jasmine |
Erweitern eines Beutels mit SpaltenConflict
Erweitern Sie einen Beutel, und verwenden Sie die columnsConflict
Option, um Konflikte zwischen vorhandenen Spalten und Spalten zu beheben, die bag_unpack()
vom Operator erzeugt 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
Ausgabe
Age | Name |
---|---|
20 | John |
40 | David |
30 | Jasmine |
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
Ausgabe
Age | Name |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Erweitern einer Tasche mit ignoredProperties
Erweitern Sie einen Beutel, und verwenden Sie die ignoredProperties
Option, um 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']))
Ausgabe
Name |
---|
John |
David |
Jasmine |
Erweitern eines Beutels mit einem abfragedefiniertem OutputSchema
Erweitern Sie einen Beutel, und verwenden Sie die OutputSchema
Option, um die Auswertung verschiedener Optimierungen zu ermöglichen, bevor die eigentliche Abfrage ausgeführt wird.
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)
Ausgabe
Name | Age |
---|---|
John | 20 |
David | 40 |
Jasmine | 30 |
Erweitern Sie einen Beutel, und verwenden Sie die OutputSchema
Option, um die Auswertung verschiedener Optimierungen zu ermöglichen, bevor die eigentliche Abfrage ausgeführt wird. 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)
Ausgabe
BESCHREIBUNG | Name | Age |
---|---|---|
Kursteilnehmer | John | 20 |
Lehrer | David | 40 |
Kursteilnehmer | Jasmine | 30 |
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für