operator partycji
Operator partycji partycjonuje rekordy tabeli wejściowej na wiele podtables zgodnie z wartościami w kolumnie klucza. Operator uruchamia podquery dla każdej podtable i tworzy pojedynczą tabelę danych wyjściowych, która jest związkiem wyników wszystkich podquerii.
Ten operator jest przydatny, gdy musisz wykonać podquery tylko w podzestawie wierszy należących do tego samego klucza partycji, a nie wykonywać zapytań względem całego zestawu danych. Te podquery mogą obejmować funkcje agregujące, funkcje okien, top N i inne.
Operator partycji obsługuje kilka strategii operacji podquery:
- Natywny — użyj niejawnego źródła danych z tysiącami wartości partycji klucza.
- Shuffle — użyj niejawnego źródła z milionami wartości partycji klucza.
- Starsza wersja — użyj niejawnego lub jawnego źródła dla wartości partycji klucza 64 lub mniejszej.
Składnia
T|
partition
[ Strategia ] [ hint.strategy=
Wskazówki ] by
Przekształcenia kolumnYPodquery(
)
T|
partition
[ ] [ hint.strategy=legacy
Wskazówki ] by
SubQueryWithSourcekolumny{
}
Dowiedz się więcej o konwencjach składniowych.
Parametry
Nazwa | Typ | Wymagane | Opis |
---|---|---|---|
T | string |
✔️ | Źródło tabelaryczne danych wejściowych. |
Strategia | string |
Wartość legacy , shuffle lub native . Ta wskazówka definiuje strategię wykonywania operatora partycji.Jeśli żadna strategia nie zostanie określona, zostanie użyta legacy strategia. Aby uzyskać więcej informacji, zobacz Strategie. |
|
Kolumna | string |
✔️ | Nazwa kolumny w języku T , której wartości określają sposób partycjonowania źródła tabelarycznego danych wejściowych. |
TransformationSubQuery | string |
✔️ | Wyrażenie przekształcenia tabelarycznego. Źródło jest niejawnie tabelami podrzędnymi utworzonymi przez partycjonowanie rekordów języka T. Każda podtabela jest homogeniczna dla wartości Kolumna. Wyrażenie musi zawierać tylko jeden wynik tabelaryczny i nie powinien zawierać innych typów instrukcji, takich jak let instrukcje. |
SubQueryWithSource | string |
✔️ | Wyrażenie tabelaryczne zawierające własne źródło tabelaryczne, takie jak odwołanie do tabeli. Ta składnia jest obsługiwana tylko w przypadku starszej strategii. Podqueria może odwoływać się tylko do kolumny klucza , Kolumna, z języka T. Aby odwołać się do kolumny, użyj składni toscalar( Kolumna) .Wyrażenie musi zawierać tylko jeden wynik tabelaryczny i nie powinien zawierać innych typów instrukcji, takich jak let instrukcje. |
Wskazówki | string |
Zero lub więcej parametrów rozdzielanych spacjami w postaci: HintName= Value , która kontroluje zachowanie operatora. Zobacz obsługiwane wskazówki dotyczące typu strategii. |
Obsługiwane wskazówki
Nazwa wskazówki | Typ | Strategia | Opis |
---|---|---|---|
hint.shufflekey |
string |
losowo | Klucz partycji używany do uruchamiania operatora partycji ze strategią shuffle . |
hint.materialized |
bool |
Starszych | Jeśli ustawiono wartość true , zmaterializuje źródło partition operatora. Wartość domyślna to false . |
hint.concurrency |
int |
Starszych | Określa liczbę partycji, które mają być uruchamiane równolegle. Wartość domyślna to 16 . |
hint.spread |
int |
Starszych | Określa sposób dystrybucji partycji między węzłami klastra. Wartość domyślna to 1 .Jeśli na przykład istnieje N partycji, a wskazówka rozkładu jest ustawiona na P, partycje N będą przetwarzane przez różne węzły klastra P równocześnie równolegle/sekwencyjnie w zależności od wskazówki współbieżności. |
Zwraca
Operator zwraca związek wyników poszczególnych podquerii.
Strategie
Operator partycji obsługuje kilka strategii operacji podquery: natywnej, shuffle i starszej wersji.
Uwaga
Rozróżnienie między strategiami native
i shuffle
umożliwia obiektowi wywołującego wskazanie kardynalności i strategii wykonywania podquery. Ten wybór może mieć wpływ na czas ukończenia podquerii, ale nie zmienia wyniku końcowego.
Strategia natywna
Ta strategia powinna być stosowana, gdy liczba odrębnych wartości klucza partycji nie jest duża, w przybliżeniu w tysiącach.
Podquery muszą być przekształceniem tabelarycznym, które nie określa źródła tabelarycznego. Źródło jest niejawne i jest przypisywane zgodnie z partycjami podrzędnymi. W podquery można używać tylko niektórych obsługiwanych operatorów . Nie ma żadnych ograniczeń dotyczących liczby partycji.
Aby użyć tej strategii, określ wartość hint.strategy=native
.
Strategia mieszania
Ta strategia powinna być stosowana, gdy liczba odrębnych wartości klucza partycji jest duża, w milionach.
Podquery muszą być przekształceniem tabelarycznym, które nie określa źródła tabelarycznego. Źródło jest niejawne i jest przypisywane zgodnie z partycjami podrzędnymi. W podquery można używać tylko niektórych obsługiwanych operatorów . Nie ma żadnych ograniczeń dotyczących liczby partycji.
Aby użyć tej strategii, określ wartość hint.strategy=shuffle
. Aby uzyskać więcej informacji na temat strategii i wydajności mieszania, zobacz zapytanie mieszania.
Obsługiwane operatory dla strategii natywnych i shuffle
Poniższa lista operatorów może być używana w podquery ze strategiami natywnymi lub shuffle:
- Liczba
- Odrębne
- Rozszerzyć
- seria make-series
- mv-apply
- mv-expand
- Przeanalizować
- analizowanie, gdzie
- Projektu
- project-away
- utrzymanie projektu
- zmiana nazwy projektu
- zmiana kolejności projektu
- Zmniejszyć
- Przykładowe
- sample-distinct
- Skanowania
- search
- Serializacji
- Sortowania
- Podsumować
- take
- Do góry
- top-hitters
- górna zagnieżdżona
- Gdzie
Uwaga
- Operatory odwołujące się do źródła tabeli innego niż partycje podrzędne nie są zgodne ze strategiami
native
ishuffle
. Na przykład sprzężenia, unii, danych externaldata i oceny (wtyczki). W takich scenariuszach należy skorzystać ze starszej strategii. - Operator rozwidlenia nie jest obsługiwany dla żadnego typu strategii, ponieważ podzapytywanie musi zwrócić pojedynczy wynik tabelaryczny.
Starsza strategia
Ze względów legacy
historycznych strategia jest strategią domyślną. Zalecamy jednak preferowanie strategii natywnych lub mieszanych , ponieważ legacy
podejście jest ograniczone do 64 partycji i jest mniej wydajne.
W niektórych scenariuszach legacy
strategia może być konieczna ze względu na obsługę dołączania źródła tabelarycznego w podzapytaniu. W takich przypadkach podzapytywanie może odwoływać się tylko do kolumny klucza, Kolumna, ze źródła tabelarycznego danych wejściowych , T. Aby odwołać się do kolumny, użyj składni toscalar(
Kolumna)
.
Jeśli podzapytywanie jest przekształceniem tabelarycznym bez źródła tabelarycznego, źródło jest niejawne i jest oparte na partycjach podrzędnych.
Aby użyć tej strategii, określ hint.strategy=legacy
lub pomiń wszelkie inne wskazania strategii.
Uwaga
Jeśli kolumna partycji Column zawiera więcej niż 64 odrębne wartości, wystąpi błąd.
Przykłady
Znajdowanie najważniejszych wartości
W niektórych przypadkach bardziej wydajne i łatwiejsze jest pisanie zapytania przy użyciu partition
operatora niż użycie top-nested
operatora . Następujące zapytanie uruchamia podzapytywanie obliczeń summarize
i top
dla każdego State
rozpoczynającego się od W
: "WYOMING", "WASHINGTON", "WEST VIRGINIA" i "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
)
Dane wyjściowe
Typ zdarzenia | Stan | Zdarzenia | Obrażeń |
---|---|---|---|
Grad | WYOMING | 108 | 0 |
Silny wiatr | WYOMING | 81 | 5 |
Burza zimowa | WYOMING | 72 | 0 |
Ciężki śnieg | WASHINGTON | 82 | 0 |
Silny wiatr | WASHINGTON | 58 | 13 |
Pożary lasów | WASHINGTON | 29 | 0 |
Burza z piorunami | WEST VIRGINIA | 180 | 1 |
Grad | WEST VIRGINIA | 103 | 0 |
Pogoda zimowa | WEST VIRGINIA | 88 | 0 |
Burza z piorunami | WISCONSIN | 416 | 1 |
Burza zimowa | WISCONSIN | 310 | 0 |
Grad | WISCONSIN | 303 | 1 |
Strategia natywna
Następujące zapytanie zwraca 2 EventType
pierwsze wartości TotalInjuries
dla każdego State
, co zaczyna się od "W":
StormEvents
| where State startswith 'W'
| partition hint.strategy = native by State
(
summarize TotalInjueries = sum(InjuriesDirect) by EventType
| top 2 by TotalInjueries
)
Dane wyjściowe
Typ zdarzenia | TotalInjueries |
---|---|
Tornado | 4 |
Grad | 1 |
Burza z piorunami | 1 |
Nadmierne ciepło | 0 |
Silny wiatr | 13 |
Lightning | 5 |
Wysoki wiatr | 5 |
Avalanche | 3 |
Strategia mieszania
Poniższe zapytanie zwraca 3 DamagedProperty
pierwsze wartości foreach EpisodeId
oraz kolumny EpisodeId
i State
.
StormEvents
| partition hint.strategy=shuffle by EpisodeId
(
top 3 by DamageProperty
| project EpisodeId, State, DamageProperty
)
| count
Dane wyjściowe
Liczba |
---|
22345 |
Starsza strategia z jawnym źródłem
Następujące zapytanie uruchamia dwa podquery:
- Gdy
x == 1
zapytanie zwraca wszystkie wiersze zStormEvents
tych elementów o wartościInjuriesIndirect == 1
. - Gdy
x == 2
zapytanie zwraca wszystkie wiersze zStormEvents
tych elementów o wartościInjuriesIndirect == 2
.
Ostatecznym wynikiem jest związek tych dwóch podkwadek.
range x from 1 to 2 step 1
| partition hint.strategy=legacy by x {StormEvents | where x == InjuriesIndirect}
| count
Dane wyjściowe
Liczba |
---|
113 |
Dokumentacja partycji
W poniższym przykładzie pokazano, jak użyć operatora as , aby nadać każdej partycji danych nazwę "name", a następnie ponownie użyć tej nazwy w podquery. Takie podejście jest istotne tylko dla legacy
strategii.
T
| partition by Dim
(
as Partition
| extend MetricPct = Metric * 100.0 / toscalar(Partition | summarize sum(Metric))
)
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla