operator union

Neemt twee of meer tabellen en retourneert de rijen van alle tabellen.

Syntax

[ T| ] union [ UnionParameters ] [kind=|outerinner] [withsource=ColumnName] [isfuzzy=|truefalse] Tabellen

Meer informatie over syntaxisconventies.

Notitie

De werking van de union operator kan worden gewijzigd door de best_effort aanvraageigenschap in te stellen op true, met behulp van een set-instructie of via clientaanvraageigenschappen. Wanneer deze eigenschap is ingesteld op true, negeert de union operator fuzzy resolutie- en connectiviteitsfouten om een van de subexpressies uit te voeren die worden 'unioned' en levert een waarschuwing op in de resultaten van de querystatus.

Parameters

Naam Type Vereist Beschrijving
T string De tabellaire invoerexpressie.
UnionParameters string Nul of meer door spaties gescheiden parameters in de vorm van Naamwaarde= die het gedrag van de rijovereenkomst en het uitvoeringsplan bepalen. Zie ondersteunde samenvoegparameters.
kind string inner of outer. inner zorgt ervoor dat het resultaat de subset van kolommen bevat die gemeenschappelijk zijn voor alle invoertabellen. outer zorgt ervoor dat het resultaat alle kolommen bevat die voorkomen in een van de invoerwaarden. Cellen die niet door een invoerrij zijn gedefinieerd, worden ingesteld op null. De standaardwaarde is outer.

Met outerbevat het resultaat alle kolommen die voorkomen in een van de invoerwaarden, één kolom voor elke naam en elk type. Dit betekent dat als een kolom in meerdere tabellen wordt weergegeven en meerdere typen heeft, deze een overeenkomende kolom heeft voor elk type in het resultaat van de samenvoeging. Deze kolomnaam is achtervoegsel met een _, gevolgd door het oorspronkelijke kolomtype.
withsource=Kolomnaam string Indien opgegeven, bevat de uitvoer een kolom met de naam ColumnName waarvan de waarde aangeeft welke brontabel elke rij heeft bijgedragen. Als de query effectief verwijst naar tabellen uit meer dan één database, inclusief de standaarddatabase, heeft de waarde van deze kolom een tabelnaam die is gekwalificeerd met de database. cluster- en databasekwalificaties zijn aanwezig in de waarde als naar meer dan één cluster wordt verwezen.
isfuzzy bool Als dit is ingesteld op true, staat u een fuzzy resolutie van de samenvoegpoten toe. De set samenvoegbronnen wordt teruggebracht tot de set tabelverwijzingen die op dat moment toegankelijk zijn tijdens het analyseren van de query en het voorbereiden op uitvoering. Als ten minste één dergelijke tabel is gevonden, geeft een oplossingsfout een waarschuwing in de querystatusresultaten, maar wordt de uitvoering van de query niet verhinderd. Als er geen oplossingen zijn, retourneert de query een fout. De standaardwaarde is false.

isfuzzy=true is alleen van toepassing op de union bronomzettingsfase. Zodra de set brontabellen is bepaald, worden eventuele aanvullende queryfouten niet onderdrukt.
Tabellen string Een of meer door komma's gescheiden tabelverwijzingen, een query-expressie tussen haakjes of een set tabellen die is opgegeven met een jokerteken. zou bijvoorbeeld E* de samenvoeging vormen van alle tabellen in de database waarvan de naam begint E.

Ondersteunde samenvoegparameters

Naam Type Vereist Beschrijving
hint.concurrency int Geeft het systeem aan hoeveel gelijktijdige subquery's van de union operator parallel moeten worden uitgevoerd. De standaardwaarde is het aantal CPU-kernen op het knooppunt van het cluster (2 tot 16).
hint.spread int Geeft aan hoeveel knooppunten moeten worden gebruikt door de gelijktijdige union uitvoering van subquery's. De standaardwaarde is 1.
Naam Type Vereist Beschrijving
T string De tabellaire invoerexpressie.
kind string inner of outer. inner zorgt ervoor dat het resultaat de subset van kolommen bevat die gemeenschappelijk zijn voor alle invoertabellen. outer zorgt ervoor dat het resultaat alle kolommen bevat die voorkomen in een van de invoerwaarden. Cellen die niet door een invoerrij zijn gedefinieerd, worden ingesteld op null. De standaardwaarde is outer.

Met outerbevat het resultaat alle kolommen die voorkomen in een van de invoerwaarden, één kolom voor elke naam en elk type. Dit betekent dat als een kolom in meerdere tabellen wordt weergegeven en meerdere typen heeft, deze een overeenkomende kolom heeft voor elk type in het resultaat van de samenvoeging. Deze kolomnaam is achtervoegsel met een _, gevolgd door het oorspronkelijke kolomtype.
withsource=Kolomnaam string Indien opgegeven, bevat de uitvoer een kolom met de naam ColumnName waarvan de waarde aangeeft welke brontabel elke rij heeft bijgedragen. Als de query effectief verwijst naar tabellen uit meer dan één database, inclusief de standaarddatabase, heeft de waarde van deze kolom een tabelnaam die is gekwalificeerd met de database. cluster- en databasekwalificaties zijn aanwezig in de waarde als naar meer dan één cluster wordt verwezen.
isfuzzy bool Als dit is ingesteld op true, staat u een fuzzy resolutie van de samenvoegpoten toe. De set samenvoegbronnen wordt teruggebracht tot de set tabelverwijzingen die op dat moment toegankelijk zijn tijdens het analyseren van de query en het voorbereiden op uitvoering. Als ten minste één dergelijke tabel is gevonden, geeft een oplossingsfout een waarschuwing in de querystatusresultaten, maar wordt de uitvoering van de query niet verhinderd. Als er geen oplossingen zijn, retourneert de query een fout. In query's voor meerdere werkruimten en apps mislukt de query echter als een van de werkruimten of apps niet wordt gevonden. De standaardwaarde is false.

isfuzzy=true is alleen van toepassing op de union bronomzettingsfase. Zodra de set brontabellen is bepaald, worden eventuele aanvullende queryfouten niet onderdrukt.
Tabellen string Een of meer door komma's gescheiden tabelverwijzingen, een query-expressie tussen haakjes of een set tabellen die is opgegeven met een jokerteken. zou bijvoorbeeld E* de samenvoeging vormen van alle tabellen in de database waarvan de naam begint E.

Wanneer de lijst met tabellen bekend is, mag u geen jokertekens gebruiken. Sommige werkruimten bevatten een zeer groot aantal tabellen dat zou leiden tot inefficiënte uitvoering. Tabellen kunnen ook in de loop van de tijd worden toegevoegd, wat leidt tot onvoorziene resultaten.

Notitie

  • Het union bereik kan let-instructies bevatten als deze worden toegeschreven met het view trefwoord.
  • Het union bereik bevat geen functies. Als u een functie wilt opnemen, definieert u een let-instructie met het view trefwoord.
  • Er is geen garantie voor de volgorde waarin de verenigingspoten worden weergegeven, maar als elk been een order by operator heeft, wordt elk been gesorteerd.

Retouren

Een tabel met zoveel rijen als in alle invoertabellen.

Voorbeelden

Tabellen met een tekenreeks in naam of kolom

union K* | where * has "Kusto"

Rijen uit alle tabellen in de database waarvan de naam begint met Ken waarin een kolom het woord Kustobevat.

Uniek aantal

union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)

Het aantal afzonderlijke gebruikers dat de afgelopen dag een Query gebeurtenis of een Command gebeurtenis heeft geproduceerd. In het resultaat wordt in de kolom 'SourceTable' 'Query' of 'Command' aangegeven.

Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer 
   (Command | where Timestamp > ago(1d))
| summarize dcount(UserId)

Deze efficiëntere versie produceert hetzelfde resultaat. Elke tabel wordt gefilterd voordat de samenvoeging wordt gemaakt.

isfuzzy=true gebruiken

// Using union isfuzzy=true to access non-existing view:                                     
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true
(View_1 | where x > 0), 
(View_2 | where x > 0),
(View_3 | where x > 0)
| count 

Uitvoer

Count
2

Querystatus observeren: de volgende waarschuwing is geretourneerd: Failed to resolve entity 'View_3'

// Using union isfuzzy=true and wildcard access:
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true View*, SomeView*, OtherView*
| count 

Uitvoer

Count
3

Querystatus observeren: de volgende waarschuwing is geretourneerd: Failed to resolve entity 'SomeView*'

Typen bronkolommen komen niet overeen

let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2

Uitvoer

TableName x_long x_int
View_1 1
View_2 2
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
let View_3 = view () { print x_long=3 };
union withsource=TableName View_1, View_2, View_3 

Uitvoer

TableName x_long1 x_int x_long
View_1 1
View_2 2
View_3 3

Kolom x van View_1 heeft het achtervoegsel _longontvangen en omdat er al een kolom met de naam x_long bestaat in het resultaatschema, zijn de kolomnamen gededupliceerd, waardoor een nieuwe kolom ontstaat. x_long1