union operátor
Két vagy több táblát vesz fel, és az összes sorát adja vissza.
Syntax
[ T|
] union
[ UnionParameters ] [kind=
|outer
inner
] [withsource=
ColumnName] [isfuzzy=
|true
false
] Táblák
További információ a szintaxis konvenciókról.
Megjegyzés
Az operátor működése union
módosítható úgy, hogy a best_effort
kérelem tulajdonságát a értékre true
állítja egy beállított utasítás vagy ügyfélkérés tulajdonságainak használatával. Ha ezt a tulajdonságot a értékre true
állítja, az operátor figyelmen kívül hagyja a union
homályos feloldási és csatlakozási hibákat a "egyesített" alkifejezések végrehajtásához, és figyelmeztetést ad a lekérdezés állapotának eredményeiben.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
T | string |
A bemeneti táblázatos kifejezés. | |
UnionParameters | string |
Nulla vagy több térelválasztó paraméter névérték= formájában, amely szabályozza a soregyeztetési művelet és a végrehajtási terv működését. Lásd a támogatott egyesítő paramétereket. |
|
kind |
string |
Vagy inner , vagy outer . inner az eredmény az összes bemeneti táblára jellemző oszlopok részhalmazát eredményezi. outer az eredményben az összes olyan oszlop szerepel, amely a bemenetek bármelyikében előfordul. A bemeneti sor által nem definiált cellák a következőre vannak állítva: null . A mező alapértelmezett értéke: outer .A outer használatával az eredmény tartalmazza a bemenetek bármelyikében előforduló összes oszlopot, egy oszlopot minden névhez és típuseseményhez. Ez azt jelenti, hogy ha egy oszlop több táblában jelenik meg, és több típussal rendelkezik, az egyes típusoknak megfelelő oszlopot tartalmaz az egyesítő eredményben. Ez az oszlopnév egy "_" utótaggal van ellátva, amelyet a forrásoszlop típusa követ. |
|
withsource= ColumnName |
string |
Ha meg van adva, a kimenet tartalmaz egy ColumnName nevű oszlopot, amelynek értéke azt jelzi, hogy melyik forrástábla járult hozzá az egyes sorokhoz. Ha a lekérdezés hatékonyan hivatkozik több adatbázis tábláira, beleértve az alapértelmezett adatbázist is, akkor ennek az oszlopnak az értéke rendelkezik az adatbázissal minősített táblanévvel. a fürt- és adatbázis-minősítések akkor szerepelnek az értékben, ha egynél több fürtre hivatkoznak. | |
isfuzzy |
bool |
Ha a értékre true van állítva, lehetővé teszi az egyesítő lábak homályos felbontását. Az egyesítő források halmaza a meglévő és elérhető táblahivatkozások készletére csökken a lekérdezés elemzése és a végrehajtás előkészítése során. Ha legalább egy ilyen táblát találtak, a feloldási hibák figyelmeztetést eredményeznek a lekérdezés állapotának eredményeiben, de nem akadályozzák meg a lekérdezés végrehajtását. Ha nem sikerült feloldás, a lekérdezés hibát ad vissza. A mező alapértelmezett értéke: false .isfuzzy=true csak a union forrásfeloldási fázisra vonatkozik. A forrástáblák készletének meghatározása után a lehetséges további lekérdezési hibák nem lesznek letiltva. |
|
Táblák | string |
Egy vagy több vesszővel elválasztott táblahivatkozás, egy zárójelet tartalmazó lekérdezési kifejezés vagy egy helyettesítő karakterrel megadott táblakészlet. Ez lehet például az adatbázis összes táblájának egysége, E* amelynek a neve elkezdődik E . |
Támogatott egyesítő paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
hint.concurrency |
int |
Arra utal a rendszerben, hogy az operátor hány egyidejű részügyletét union kell párhuzamosan végrehajtani. Az alapértelmezett érték a fürt egyetlen csomópontján található processzormagok száma (2–16). |
|
hint.spread |
int |
Arra utal, hogy a rendszer hány csomópontot használjon az egyidejű union részbekérdezések végrehajtásához. Az alapértelmezett érték 1. |
Név | Típus | Kötelező | Leírás |
---|---|---|---|
T | string |
A bemeneti táblázatos kifejezés. | |
kind |
string |
Vagy inner , vagy outer . inner az eredmény az összes bemeneti táblára jellemző oszlopok részhalmazát eredményezi. outer az eredményben az összes olyan oszlop szerepel, amely a bemenetek bármelyikében előfordul. A bemeneti sor által nem definiált cellák a következőre vannak állítva: null . A mező alapértelmezett értéke: outer .A outer használatával az eredmény tartalmazza a bemenetek bármelyikében előforduló összes oszlopot, egy oszlopot minden névhez és típuseseményhez. Ez azt jelenti, hogy ha egy oszlop több táblában jelenik meg, és több típussal rendelkezik, az egyes típusoknak megfelelő oszlopot tartalmaz az egyesítő eredményben. Ez az oszlopnév egy "_" utótaggal van ellátva, amelyet a forrásoszlop típusa követ. |
|
withsource= ColumnName |
string |
Ha meg van adva, a kimenet tartalmaz egy ColumnName nevű oszlopot, amelynek értéke azt jelzi, hogy melyik forrástábla járult hozzá az egyes sorokhoz. Ha a lekérdezés hatékonyan hivatkozik több adatbázis tábláira, beleértve az alapértelmezett adatbázist is, akkor ennek az oszlopnak az értéke rendelkezik az adatbázissal minősített táblanévvel. a fürt- és adatbázis-minősítések akkor szerepelnek az értékben, ha egynél több fürtre hivatkoznak. | |
isfuzzy |
bool |
Ha a értékre true van állítva, lehetővé teszi az egyesítő lábak homályos felbontását. Az egyesítő források halmaza a meglévő és elérhető táblahivatkozások készletére csökken a lekérdezés elemzése és a végrehajtás előkészítése során. Ha legalább egy ilyen táblát találtak, a feloldási hibák figyelmeztetést eredményeznek a lekérdezés állapotának eredményeiben, de nem akadályozzák meg a lekérdezés végrehajtását. Ha nem sikerült feloldás, a lekérdezés hibát ad vissza. A munkaterületek közötti és alkalmazásközi lekérdezésekben azonban, ha valamelyik munkaterület vagy alkalmazás nem található, a lekérdezés sikertelen lesz. A mező alapértelmezett értéke: false .isfuzzy=true csak a union forrásfeloldási fázisra vonatkozik. A forrástáblák készletének meghatározása után a lehetséges további lekérdezési hibák nem lesznek letiltva. |
|
Táblák | string |
Egy vagy több vesszővel elválasztott táblahivatkozás, egy zárójelet tartalmazó lekérdezési kifejezés vagy egy helyettesítő karakterrel megadott táblakészlet. Ez lehet például az adatbázis összes táblájának egysége, E* amelynek a neve elkezdődik E .Ha a táblák listája ismert, ne használjon helyettesítő karaktereket. Egyes munkaterületek nagyon sok olyan táblát tartalmaznak, amelyek nem hatékony végrehajtáshoz vezetnek. A táblák az idő múlásával is hozzáadhatók, ami nem kiszámíthatatlan eredményekhez vezet. |
Megjegyzés
- A
union
hatókör tartalmazhatja a let utasításokat , ha aview
kulcsszóval van attribútuma. - A
union
hatókör nem tartalmaz függvényeket. Egy függvény hozzáadásához definiáljon egy let utasítást aview
kulcsszóval. - Nincs garancia arra, hogy az egyesítő lábak milyen sorrendben jelennek meg, de ha minden lábnak van operátora
order by
, akkor minden láb rendezve lesz.
Válaszok
Olyan tábla, amely annyi sort tartalmaz, amennyit az összes bemeneti táblában tartalmaz.
Példák
Névvel vagy oszlopmal rendelkező sztringgel rendelkező táblázatok
union K* | where * has "Kusto"
Az adatbázis összes táblájának sorai, amelyek neve a következővel K
kezdődik: , és amelyben bármely oszlop tartalmazza a szót Kusto
.
Eltérőek száma
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
Azoknak a különböző felhasználóknak a száma, amelyek eseményt Query
vagy eseményt Command
hoztak létre az elmúlt napon. Az eredményben a SourceTable oszlop a "Lekérdezés" vagy a "Command" értéket jelöli.
Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer
(Command | where Timestamp > ago(1d))
| summarize dcount(UserId)
Ez a hatékonyabb verzió ugyanazt az eredményt eredményezi. Az egyes táblákat szűri az egyesítő létrehozása előtt.
Az isfuzzy=true
használata
// 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
Kimenet
Darabszám |
---|
2 |
A lekérdezés állapotának megfigyelése – a következő figyelmeztetést adja vissza: 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
Kimenet
Darabszám |
---|
3 |
A lekérdezés állapotának megfigyelése – a következő figyelmeztetést adja vissza: Failed to resolve entity 'SomeView*'
A forrásoszlopok típusai nem egyeznek
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2
Kimenet
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
Kimenet
TableName | x_long1 | x_int | x_long |
---|---|---|---|
View_1 | 1 | ||
View_2 | 2 | ||
View_3 | 3 |
Az oszlop x
a utótagot _long
kapta, és mivel a nevű x_long
oszlop már létezik az eredménysémában, az oszlopnevek duplikálva lettek, és egy új oszlopot eredményeztek.View_1
x_long1
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: