Delen via


bag_unpack-invoegtoepassing

Van toepassing op: ✅Microsoft FabricAzure Data Explorer-

Met de bag_unpack-invoegtoepassing wordt één kolom van het type dynamicuitgepakt door elke eigenschapstas op het hoogste niveau als kolom te behandelen. De invoegtoepassing wordt aangeroepen met de operator evaluate.

Syntaxis

T|evaluatebag_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 vervangen
keep_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