bag_unpack-invoegtoepassing
Van toepassing op: ✅Microsoft Fabric✅Azure Data Explorer-
Met de bag_unpack
-invoegtoepassing wordt één kolom van het type dynamic
uitgepakt door elke eigenschapstas op het hoogste niveau als kolom te behandelen. De invoegtoepassing wordt aangeroepen met de operator evaluate
.
Syntaxis
T|
evaluate
bag_unpack(
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
T- | string |
✔️ | De tabellaire invoer waarvan de kolom Kolom moet worden uitgepakt. |
kolom | dynamic |
✔️ | De kolom van T- die u wilt uitpakken. |
OutputColumnPrefix | string |
Een gemeenschappelijk voorvoegsel dat moet worden toegevoegd aan alle kolommen die door de invoegtoepassing worden geproduceerd. | |
columnsConflict | string |
De richting voor het oplossen van kolomconflicten. Geldige waarden: error - Query produceert een fout (standaard)replace_source - Bronkolom wordt vervangenkeep_source - Bronkolom wordt bewaard |
|
ignoredProperties- | dynamic |
Een optionele set zakeigenschappen die moeten worden genegeerd. } | |
OutputSchema- | De namen en typen voor de verwachte kolommen van de uitvoer van de bag_unpack -invoegtoepassing. Als u het verwachte schema opgeeft, wordt de uitvoering van query's geoptimaliseerd door de werkelijke query niet eerst uit te voeren om het schema te verkennen. Zie syntaxis van het uitvoerschemavoor syntaxisinformatie. |
Syntaxis van het uitvoerschema
(
ColumnName:
ColumnType [,
...] )
Als u alle kolommen van de invoertabel wilt toevoegen aan de uitvoer van de invoegtoepassing, gebruikt u als volgt een jokerteken *
als eerste parameter:
(
*
,
ColumnName:
ColumnType [,
...] )
Retourneert
De bag_unpack
-invoegtoepassing retourneert een tabel met zoveel records als de tabellaire invoer (T). Het schema van de tabel is hetzelfde als het schema van de invoer in tabelvorm met de volgende wijzigingen:
- De opgegeven invoerkolom (Kolom) wordt verwijderd.
- Het schema wordt uitgebreid met zoveel kolommen als er verschillende sleuven zijn in de waarden van de eigenschapsverzameling op het hoogste niveau van T-. De naam van elke kolom komt overeen met de naam van elke site, eventueel voorafgegaan door OutputColumnPrefix. Het type is het type van de site, als alle waarden van dezelfde site hetzelfde type hebben, of
dynamic
, als de waarden in het type verschillen.
Notitie
Als het OutputSchema niet is opgegeven, varieert het uitvoerschema van de invoegtoepassing afhankelijk van de invoergegevenswaarden. Daarom kunnen meerdere uitvoeringen van de invoegtoepassing met verschillende gegevensinvoer verschillende uitvoerschema's produceren.
De invoergegevens voor de invoegtoepassing moeten zodanig zijn dat het uitvoerschema alle regels voor een tabellair schema volgt. In het bijzonder:
De naam van een uitvoerkolom mag niet hetzelfde zijn als een bestaande kolom in de invoer in tabelvorm T, tenzij deze kolom moet worden uitgepakt (Kolom), omdat hiermee twee kolommen met dezelfde naam worden geproduceerd.
Alle sitenamen, wanneer deze worden voorafgegaan door OutputColumnPrefix, moeten geldige entiteitsnamen zijn en de naamgevingsregels voor id'svolgen.
Null-waarden worden genegeerd.
Voorbeelden
Een tas uitvouwen
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d)
uitvoer
Leeftijd | Naam |
---|---|
20 | John |
40 | Dave |
30 | Jasmijn |
Een tas uitvouwen met OutputColumnPrefix
Vouw een zak uit en gebruik de optie OutputColumnPrefix
om kolomnamen te maken die beginnen met het voorvoegsel 'Property_'.
datatable(d:dynamic)
[
dynamic({"Name": "John", "Age":20}),
dynamic({"Name": "Dave", "Age":40}),
dynamic({"Name": "Jasmine", "Age":30}),
]
| evaluate bag_unpack(d, 'Property_')
uitvoer
Property_Age | Property_Name |
---|---|
20 | John |
40 | Dave |
30 | Jasmijn |
Een zak uitvouwen met columnsConflict
Vouw een zak uit en gebruik de optie columnsConflict
om conflicten tussen bestaande kolommen en kolommen op te lossen die worden geproduceerd door de operator 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
uitvoer
Leeftijd | Naam |
---|---|
20 | John |
40 | Dave |
30 | Jasmijn |
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
uitvoer
Leeftijd | Naam |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Een tas uitbreiden met ignoredProperties
Vouw een zak uit en gebruik de optie ignoredProperties
om bepaalde eigenschappen in de eigenschappentas te negeren.
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']))
uitvoer
Naam |
---|
John |
Dave |
Jasmijn |
Een tas uitbreiden met een querygedefinieerde OutputSchema
Vouw een zak uit en gebruik de optie OutputSchema
om verschillende optimalisaties te laten evalueren voordat de werkelijke query wordt uitgevoerd.
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)
uitvoer
Naam | Leeftijd |
---|---|
John | 20 |
Dave | 40 |
Jasmijn | 30 |
Vouw een zak uit en gebruik de optie OutputSchema
om verschillende optimalisaties te laten evalueren voordat de werkelijke query wordt uitgevoerd. Gebruik een jokerteken *
om alle kolommen van de invoertabel te retourneren.
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)
uitvoer
Beschrijving | Naam | Leeftijd |
---|---|---|
Student | John | 20 |
Leraar | Dave | 40 |
Student | Jasmijn | 30 |