partition operátor
A partíciókezelő a bemeneti tábla rekordjait több altáblára particionálja egy kulcsoszlop értékei szerint. Az operátor minden altáblán futtat egy al lekérdezést, és egyetlen kimeneti táblát hoz létre, amely az összes albekérdezés eredményeinek egyesítését képezi.
Ez az operátor akkor hasznos, ha csak ugyanazon partíciókulcshoz tartozó sorok egy részhalmazán kell végrehajtania egy rész lekérdezést, és nem kell lekérdeznie a teljes adatkészletet. Ezek az alküldetek lehetnek aggregátumfüggvények, ablakfüggvények, felső N és mások.
A partíciókezelő több alkérelmes műveletstratégiát támogat:
- Natív – több ezer kulcspartíciós értékkel rendelkező implicit adatforrással használható.
- Shuffle – egy több millió kulcspartíciós értékkel rendelkező implicit forrással való használat.
- Örökölt – implicit vagy explicit forrással használható 64 vagy kevesebb kulcspartíciós értékhez.
Syntax
T|
partition
[ hint.strategy=
Stratégia ] [ Tippek ] by
OszlopátalakításSubQuery(
)
T|
partition
[ hint.strategy=legacy
] [ Tippek ] by
Column{
SubQueryWithSource}
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
T | string |
✔️ | A bemeneti táblázatos forrás. |
Stratégia | string |
Az érték legacy , shuffle , vagy native . Ez a tipp a partíciókezelő végrehajtási stratégiáját határozza meg.Ha nincs megadva stratégia, a rendszer a legacy stratégiát használja. További információ: Stratégiák. |
|
Oszlop | string |
✔️ | A T oszlop neve, amelynek értékei határozzák meg a bemeneti táblázatos forrás particionálását. |
TransformationSubQuery | string |
✔️ | Táblázatos átalakítási kifejezés. A forrás implicit módon a T rekordjainak particionálásával előállított altáblák. Minden altábla homogén az Oszlop értékén. A kifejezésnek csak egy táblázatos eredményt kell adnia, és nem tartalmazhat más típusú utasításokat, például let utasításokat. |
SubQueryWithSource | string |
✔️ | Táblázatos kifejezés, amely magában foglalja a saját táblázatos forrását, például egy táblahivatkozást. Ez a szintaxis csak az örökölt stratégiával támogatott. Az alkérelmek csak a T kulcsoszlopára hivatkozhatnak. Az oszlopra való hivatkozáshoz használja az Oszlop) szintaxisttoscalar( .A kifejezésnek csak egy táblázatos eredményt kell adnia, és nem tartalmazhat más típusú utasításokat, például let utasításokat. |
Módosítók | string |
Nulla vagy több térelválasztó paraméter a következő formában: HintName= Érték , amely az operátor viselkedését szabályozza. Tekintse meg a támogatott tippeket stratégiatípusonként. |
Támogatott tippek
Tipp neve | Típus | Stratégia | Description |
---|---|---|---|
hint.shufflekey |
string |
shuffle | A partíciókezelőnek a stratégiával való shuffle futtatásához használt partíciókulcs. |
hint.materialized |
bool |
Örökölt | Ha a értékre true van állítva, az az operátor forrását partition fogja materializálni. Az alapértelmezett érték false . |
hint.concurrency |
int |
Örökölt | Meghatározza, hogy hány partíciót kell párhuzamosan futtatni. Az alapértelmezett érték 16 . |
hint.spread |
int |
Örökölt | Meghatározza, hogyan oszthatja el a partíciókat a fürtcsomópontok között. Az alapértelmezett érték 1 .Ha például N partíciók vannak, és az eloszlási tipp P értékre van állítva, akkor az N-partíciókat a P különböző fürtcsomópontok azonos párhuzamos/egymást követő módon dolgozzák fel az egyidejűségi tipptől függően. |
Válaszok
Az operátor az egyes albekérdezések eredményeinek egy-egy egyesítését adja vissza.
Stratégiák
A partíciókezelő számos allekérdezési stratégiát támogat: natív, shuffle és örökölt.
Megjegyzés
A és shuffle
a native
stratégiák megkülönböztetése lehetővé teszi a hívó számára, hogy jelezze az alkérés számosságát és végrehajtási stratégiáját. Ez a beállítás hatással lehet arra, hogy mennyi ideig tart az alkérelmek végrehajtása, de nem módosítja a végeredményt.
Natív stratégia
Ezt a stratégiát akkor kell alkalmazni, ha a partíciókulcs eltérő értékeinek száma nem nagy, nagyjából ezres nagyságrendben.
Az alkérdezésnek táblázatos átalakításnak kell lennie, amely nem ad meg táblázatos forrást. A forrás implicit, és az altábla partíciói szerint van hozzárendelve. Az allekérdezésben csak bizonyos támogatott operátorok használhatók. A partíciók száma nincs korlátozva.
A stratégia használatához adja meg a következőt hint.strategy=native
: .
Elosztási stratégia
Ezt a stratégiát akkor kell alkalmazni, ha a partíciókulcs különböző értékeinek száma nagy, milliókban.
Az alkérdezésnek táblázatos átalakításnak kell lennie, amely nem ad meg táblázatos forrást. A forrás implicit, és az altábla partíciói szerint van hozzárendelve. Az allekérdezésben csak bizonyos támogatott operátorok használhatók. A partíciók száma nincs korlátozva.
A stratégia használatához adja meg a következőt hint.strategy=shuffle
: . Az elosztási stratégiával és teljesítménnyel kapcsolatos további információkért lásd: elosztási lekérdezés.
Támogatott operátorok a natív és az elosztási stratégiákhoz
Az operátorok alábbi listája használható a natív vagy a shuffle stratégiákkal rendelkező allekérdezésekben:
- Számít
- Különböző
- Kiterjesztése
- sorozat készítése
- mv-apply
- mv-expand
- parse
- elemzés helye
- Projekt
- project-away
- projekt-megtartás
- projekt átnevezése
- projekt-átrendezés
- Csökkenti
- Minta
- sample-distinct
- Átkutat
- search
- Serialize
- Rendezés
- Összefoglalni
- take
- Top
- top-hitters
- top-nested
- Ahol
Megjegyzés
- Az altáblapartícióktól eltérő táblaforrásra hivatkozó operátorok nem kompatibilisek a és
shuffle
anative
stratégiával. Például join, union, externaldata és evaluate (beépülő modulok). Ilyen forgatókönyvek esetén használja az örökölt stratégiát. - Az elágazás operátora semmilyen stratégiai típus esetében nem támogatott, mivel az al lekérdezésnek egyetlen táblázatos eredményt kell visszaadnia.
Örökölt stratégia
Korábbi okokból a legacy
stratégia az alapértelmezett stratégia. Javasoljuk azonban a natív vagy a elosztási stratégiák előnyben részesítését, mivel a legacy
megközelítés 64 partícióra korlátozódik, és kevésbé hatékony.
Bizonyos forgatókönyvekben a legacy
stratégia azért lehet szükséges, mert támogatja a táblázatos forrás allekérdezésbe való hozzáadását. Ilyen esetekben az al lekérdezés csak a T bemeneti táblázatos forrásból származó Oszlop kulcsoszlopra hivatkozhat. Az oszlopra való hivatkozáshoz használja az Oszlop)
szintaxisttoscalar(
.
Ha az al lekérdezés táblázatos forrás nélküli táblázatos átalakítás, a forrás implicit, és az altáblás partíciókon alapul.
A stratégia használatához adjon meg hint.strategy=legacy
vagy hagyjon ki minden más stratégiai jelzést.
Megjegyzés
Hiba történik, ha az Oszlop partícióoszlop több mint 64 különböző értéket tartalmaz.
Példák
Felső értékek keresése
Bizonyos esetekben hatékonyabb és egyszerűbb lekérdezéseket írni az operátorral, partition
mint az top-nested
operátor használatával. A következő lekérdezés egy al lekérdezést summarize
futtat, és top
mindegyikhez State
a következővel kezdődik W
: "WYOMING", "WASHINGTON", "WEST VIRGINIA", és "WISCONSIN".
StormEvents
| where State startswith 'W'
| partition hint.strategy=native by State
(
summarize Events=count(), Injuries=sum(InjuriesDirect) by EventType, State
| top 3 by Events
)
Kimenet
EventType | Állapot | esemény | Sérülések |
---|---|---|---|
Jégeső | WYOMING | 108 | 0 |
Magas szél | WYOMING | 81 | 5 |
Téli vihar | WYOMING | 72 | 0 |
Nehéz hó | WASHINGTON | 82 | 0 |
Magas szél | WASHINGTON | 58 | 13 |
Futótűz | WASHINGTON | 29 | 0 |
Zivatar szél | NYUGAT-VIRGINIA | 180 | 1 |
Jégeső | NYUGAT-VIRGINIA | 103 | 0 |
Téli időjárás | NYUGAT-VIRGINIA | 88 | 0 |
Zivatar szél | WISCONSIN | 416 | 1 |
Téli vihar | WISCONSIN | 310 | 0 |
Jégeső | WISCONSIN | 303 | 1 |
Natív stratégia
A következő lekérdezés a "W" kezdetű értékek közül State
az első 2 EventType
értéket TotalInjuries
adja vissza:
StormEvents
| where State startswith 'W'
| partition hint.strategy = native by State
(
summarize TotalInjueries = sum(InjuriesDirect) by EventType
| top 2 by TotalInjueries
)
Kimenet
EventType | TotalInjueries |
---|---|
Tornádó | 4 |
Jégeső | 1 |
Zivatar szél | 1 |
Túlzott hő | 0 |
Magas szél | 13 |
Lightning | 5 |
Magas szél | 5 |
Lavina | 3 |
Elosztási stratégia
Az alábbi lekérdezés a foreach EpisodeId
első 3 DamagedProperty
értékét, valamint az oszlopokat és State
a oszlopokat EpisodeId
adja vissza.
StormEvents
| partition hint.strategy=shuffle by EpisodeId
(
top 3 by DamageProperty
| project EpisodeId, State, DamageProperty
)
| count
Kimenet
Darabszám |
---|
22345 |
Örökölt stratégia explicit forrással
A következő lekérdezés két al lekérdezést futtat:
- Amikor
x == 1
a lekérdezés az összes olyan sort visszaadja, amely rendelkezik a következővelStormEvents
:InjuriesIndirect == 1
. - Amikor
x == 2
a lekérdezés az összes olyan sort visszaadja, amely rendelkezik a következővelStormEvents
:InjuriesIndirect == 2
.
A végeredmény a két albekérdezés egyesítése.
range x from 1 to 2 step 1
| partition hint.strategy=legacy by x {StormEvents | where x == InjuriesIndirect}
| count
Kimenet
Darabszám |
---|
113 |
Partícióhivatkozás
Az alábbi példa bemutatja, hogyan használhatja az operátort arra, hogy "nevet" adjon az egyes adatpartícióknak, majd újra felhasználja ezt a nevet az al lekérdezésben. Ez a megközelítés csak a legacy
stratégiához kapcsolódik.
T
| partition by Dim
(
as Partition
| extend MetricPct = Metric * 100.0 / toscalar(Partition | summarize sum(Metric))
)
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: