Megosztás a következőn keresztül:


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 ] byOszlopátalakításSubQuery()

T|partition [ hint.strategy=legacy ] [ Tippek ] byColumn{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 truevan á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:

Megjegyzés

  • Az altáblapartícióktól eltérő táblaforrásra hivatkozó operátorok nem kompatibilisek a és shuffle a native 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 Statea 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 == 1a lekérdezés az összes olyan sort visszaadja, amely rendelkezik a következővel StormEvents : InjuriesIndirect == 1.
  • Amikor x == 2a lekérdezés az összes olyan sort visszaadja, amely rendelkezik a következővel StormEvents : 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))
)