Invoegtoepassing voor bag_unpack
De bag_unpack
invoegtoepassing pakt één kolom van het type dynamic
uit door elke eigenschappenverzameling op het hoogste niveau als een kolom te behandelen. De invoegtoepassing wordt aangeroepen met de evaluate
operator.
Syntax
T|
evaluate
bag_unpack(
Column [,
OutputColumnPrefix ] [,
columnsConflict ] [,
ignoredProperties ] )
[:
OutputSchema]
Meer informatie over syntaxisconventies.
Parameters
Naam | Type | Vereist | Beschrijving |
---|---|---|---|
T | string |
✔️ | De tabellaire invoer waarvan kolom Kolom moet worden uitgepakt. |
Kolom | dynamic |
✔️ | De kolom van T die moet worden uitgepakt. |
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 is vervangenkeep_source - Bronkolom wordt bewaard |
|
ignoredProperties | dynamic |
Een optionele set bag-eigenschappen 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 de query geoptimaliseerd omdat u niet eerst de werkelijke query hoeft uit te voeren om het schema te verkennen. Zie De syntaxis van het uitvoerschema voor informatie over de syntaxis. |
Syntaxis van uitvoerschema
(
Kolomnaam:
ColumnType [,
...] )
Als u alle kolommen van de invoertabel wilt toevoegen aan de uitvoer van de invoegtoepassing, gebruikt u als volgt een jokerteken *
als de eerste parameter:
(
*
,
Kolomnaam:
ColumnType [,
...] )
Retouren
De bag_unpack
invoegtoepassing retourneert een tabel met evenveel records als de tabellaire invoer (T). Het schema van de tabel is hetzelfde als het schema van de tabelinvoer, met de volgende wijzigingen:
- De opgegeven invoerkolom (Kolom) wordt verwijderd.
- Het schema wordt uitgebreid met zoveel kolommen als er afzonderlijke sleuven zijn in de waarden van de eigenschappenverzameling op het hoogste niveau van T. De naam van elke kolom komt overeen met de naam van elke site, optioneel 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 type verschillen.
Notitie
Als het OutputSchema niet is opgegeven, varieert het uitvoerschema van de invoegtoepassing op basis van de invoergegevenswaarden. Daarom kunnen meerdere uitvoeringen van de invoegtoepassing met verschillende gegevensinvoer een ander uitvoerschema produceren.
Notitie
De invoergegevens voor de invoegtoepassing moeten zodanig zijn dat het uitvoerschema alle regels voor een tabellair schema volgt. Met name:
De naam van een uitvoerkolom kan niet hetzelfde zijn als een bestaande kolom in de tabellaire invoer T, tenzij het de kolom is die moet worden uitgepakt (Kolom), omdat dit twee kolommen met dezelfde naam oplevert.
Alle sitenamen, indien voorafgegaan door OutputColumnPrefix, moeten geldige entiteitsnamen zijn en voldoen aan de naamgevingsregels voor id's.
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 | Name |
---|---|
20 | Jan |
40 | Dave |
30 | Jasmine |
Een zak uitvouwen met OutputColumnPrefix
Vouw een zak uit en gebruik de OutputColumnPrefix
optie 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 | Jan |
40 | Dave |
30 | Jasmine |
Een zak uitvouwen met kolommenConflict
Vouw een bag uit en gebruik de columnsConflict
optie om conflicten op te lossen tussen bestaande kolommen en kolommen die door de bag_unpack()
operator zijn geproduceerd.
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 | Name |
---|---|
20 | Jan |
40 | Dave |
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
Uitvoer
Leeftijd | Name |
---|---|
20 | Old_name |
40 | Old_name |
30 | Old_name |
Een zak uitvouwen met ignoredProperties
Vouw een bag uit en gebruik de ignoredProperties
optie om bepaalde eigenschappen in de eigenschappenverzameling 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
Name |
---|
Jan |
Dave |
Jasmine |
Een bag uitbreiden met een querygedefinieerde OutputSchema
Vouw een bag uit en gebruik de OutputSchema
optie om toe te staan dat verschillende optimalisaties worden geëvalueerd 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
Name | Leeftijd |
---|---|
Jan | 20 |
Dave | 40 |
Jasmine | 30 |
Vouw een bag uit en gebruik de OutputSchema
optie om toe te staan dat verschillende optimalisaties worden geëvalueerd 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 | Name | Leeftijd |
---|---|---|
Student | Jan | 20 |
Leraar | Dave | 40 |
Student | Jasmine | 30 |
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor