operator union
Neemt twee of meer tabellen en retourneert de rijen van alle tabellen.
Syntax
[ T|
] union
[ UnionParameters ] [kind=
|outer
inner
] [withsource=
ColumnName] [isfuzzy=
|true
false
] 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 outer bevat 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 outer bevat 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 hetview
trefwoord. - Het
union
bereik bevat geen functies. Als u een functie wilt opnemen, definieert u een let-instructie met hetview
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 K
en waarin een kolom het woord Kusto
bevat.
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 _long
ontvangen 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
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