Udostępnij przez


operator make-series

Dotyczy: ✅Microsoft Fabric

Utwórz serię określonych zagregowanych wartości wzdłuż określonej osi.

Składnia

T| make-series [MakeSeriesParameters] [Kolumna=] Agregacja [ default= DefaultValue] [, ...] onOśKolumn [frompoczątek] [ to koniec] step krok [by [ ] = [ ...]]

Dowiedz się więcej na temat konwencji składni.

Parametry

Nazwisko Typ Wymagania opis
Kolumna string Nazwa kolumny wyników. Domyślnie nazwa pochodzi z wyrażenia .
DefaultValue skalar Wartość domyślna, która ma być używana zamiast braków wartości. Jeśli nie ma wiersza z określonymi wartościami kolumn AxisColumn i GroupExpression, odpowiedni element tablicy ma przypisaną wartość DefaultValue. Wartość domyślna to 0.
Agregacja string ✔️ Wywołanie funkcji agregacji, takiej jak count() lub avg(), z nazwami kolumn jako argumentami. Zobacz listę funkcji agregacji. Operator może używać make-series tylko funkcji agregacji, które zwracają wyniki liczbowe.
Kolumna osi string ✔️ Kolumna, według której jest uporządkowana seria. Zazwyczaj wartości kolumn są typu datetime lub timespan wszystkie typy liczbowe są akceptowane.
skalar ✔️ Niska wartość granicy kolumny AxisColumn dla każdej serii do skompilowania. Jeśli nie określono wartości początkowej , jest to pierwszy pojemnik lub krok zawierający dane w każdej serii.
koniec skalar ✔️ Wysoka niezwiązana wartość inkluzywna kolumny AxisColumn. Ostatni indeks szeregów czasowych jest mniejszy niż ta wartość i rozpoczyna się plus liczba całkowita wielokrotności kroku , która jest mniejsza niż koniec. Jeśli koniec nie zostanie określony, jest to górna granica ostatniego pojemnika lub kroku, która zawiera dane dla każdej serii.
krok skalar ✔️ Różnica lub rozmiar pojemnika między dwoma kolejnymi elementami tablicy AxisColumn . Aby uzyskać listę możliwych interwałów czasu, zobacz przedział czasu.
GroupExpression Wyrażenie w kolumnach, które zawiera zestaw unikatowych wartości. Zazwyczaj jest to nazwa kolumny, która zawiera już ograniczony zestaw wartości.
MakeSeriesParameters Zero lub więcej parametrów rozdzielonych spacjami w postaci wartości nazwy=, która kontroluje zachowanie. Zobacz obsługiwane parametry serii.

Uwaga

Parametry start, endi step służą do tworzenia tablicy wartości AxisColumn . Tablica składa się z wartości między start i end, z wartością step reprezentującą różnicę między jednym elementem tablicy a następnym. Wszystkie wartości agregacji są uporządkowane odpowiednio dla tej tablicy.

Obsługiwane parametry serii

Nazwisko opis
kind Tworzy wynik domyślny, gdy dane wejściowe operatora serii make-series są puste. Wartość: nonempty
hint.shufflekey=<key> Zapytanie shufflekey współudzieli obciążenie zapytania w węzłach klastra przy użyciu klucza do partycjonowania danych. Zobacz zapytanie mieszania

Uwaga

Tablice generowane przez serię make są ograniczone do 1048 576 wartości (2^20). Próba wygenerowania większej tablicy z serią make-series spowoduje błąd lub obciętą tablicę.

Składnia alternatywna

T| make-series [ ] = [ ] [default ...] =,onosi [ [in] range( [ ...]]

Wygenerowana seria z alternatywnej składni różni się od głównej składni w dwóch aspektach:

  • Wartość zatrzymania jest inkluzywna.
  • Łączenie osi indeksu jest generowane z wartością bin() i nie bin_at(), co oznacza, że rozpoczęcie może nie być uwzględnione w wygenerowanej serii.

Zalecamy użycie głównej składni make-series, a nie alternatywnej składni.

Zwraca

Wiersze wejściowe są rozmieszczane w grupach o tych samych wartościach by wyrażeń i wyrażeniu początkowymbin_at( Następnie określone funkcje agregacji są obliczane dla każdej grupy, tworząc wiersz dla każdej grupy. Wynik zawiera by kolumny, kolumnę AxisColumn , a także co najmniej jedną kolumnę dla każdej obliczonej agregacji. (Agregacje w wielu kolumnach lub nieliczbowych wynikach nie są obsługiwane).

Ten wynik pośredni zawiera tyle wierszy, ile istnieje odrębnych kombinacji wartości początkowych bybin_at( kroku,

Na koniec wiersze z wyniku pośredniego rozmieszczone w grupach o tych samych wartościach by wyrażeń i wszystkie zagregowane wartości są rozmieszczane w tablice (wartości dynamic typu). Dla każdej agregacji istnieje jedna kolumna zawierająca jej tablicę o tej samej nazwie. Ostatnia kolumna to tablica zawierająca wartości kolumny AxisColumn binned zgodnie z określonym krokiem.

Uwaga

Mimo że można podać dowolne wyrażenia zarówno dla wyrażeń agregacji, jak i grupowania, bardziej wydajne jest używanie prostych nazw kolumn.

Lista funkcji agregacji

Funkcja opis
avg() Zwraca średnią wartość w grupie
avgif() Zwraca średnią z predykatem grupy
count() Zwraca liczbę grup
countif() Zwraca liczbę z predykatem grupy
kowariancja() Zwraca wariancję próbną dwóch zmiennych losowych
covarianceif() Zwraca współwariancję próbki dwóch zmiennych losowych z predykatem
covariancep() Zwraca kowariancję populacji dwóch zmiennych losowych
covariancepif() Zwraca wariancję populacji dwóch zmiennych losowych z predykatem
dcount() Zwraca przybliżoną liczbę unikatowych elementów grupy
dcountif() Zwraca przybliżoną liczbę unikatowych wartości z predykatem grupy
max() Zwraca maksymalną wartość w grupie
maxif() Zwraca wartość maksymalną z predykatem grupy
min() Zwraca minimalną wartość w grupie
minif() Zwraca wartość minimalną z predykatem grupy
percentyl() Zwraca wartość percentyla w grupie
take_any() Zwraca losową wartość niepustą dla grupy
stdev() Zwraca odchylenie standardowe w grupie
sum() Zwraca sumę elementów w grupie
sumif() Zwraca sumę elementów z predykatem grupy
wariancja() Zwraca wariancję próbki w grupie
wariancja() Zwraca wariancję próbki w grupie z predykatem
variancep() Zwraca wariancję populacji w grupie
variancepif() Zwraca wariancję populacji w grupie z predykatem

Lista funkcji analizy serii

Funkcja opis
series_fir() Stosuje filtr skończonej odpowiedzi impulsowej
series_iir() Stosuje filtr Nieskończona odpowiedź impulsowa
series_fit_line() Znajduje linię prostą, która jest najlepszym przybliżeniem danych wejściowych
series_fit_line_dynamic() Znajduje wiersz, który jest najlepszym przybliżeniem danych wejściowych, zwracając obiekt dynamiczny
series_fit_2lines() Znajduje dwa wiersze, które są najlepszym przybliżeniem danych wejściowych
series_fit_2lines_dynamic() Znajduje dwa wiersze, które są najlepszym przybliżeniem danych wejściowych, zwracając obiekt dynamiczny
series_outliers() Ocenia punkty anomalii w serii
series_periods_detect() Znajduje najbardziej znaczące okresy, które istnieją w szeregach czasowych
series_periods_validate() Sprawdza, czy szereg czasowy zawiera okresowe wzorce danej długości
series_stats_dynamic() Zwracanie wielu kolumn ze wspólnymi statystykami (minimalna/maksymalna/wariancja/stdev/average)
series_stats() Generuje wartość dynamiczną z typowymi statystykami (minimalna/maksymalna/wariancja/stdev/average)

Aby uzyskać pełną listę funkcji analizy serii, zobacz: Funkcje przetwarzania serii

Lista funkcji interpolacji serii

Funkcja opis
series_fill_backward() Wykonuje interpolację wsteczną brakujących wartości w serii
series_fill_const() Zamienia brakujące wartości w serii na określoną wartość stałą
series_fill_forward() Wykonuje interpolację wypełnienia do przodu z brakującymi wartościami w serii
series_fill_linear() Wykonuje interpolację liniową brakujących wartości w serii
  • Uwaga: Funkcje interpolacji domyślnie zakładają null , że jest to brakująca wartość. W związku z tym określ default=(null), jeśli zamierzasz używać funkcji interpolacji dla serii.

Przykłady

Tabela przedstawiająca tablice liczb i średnich cen każdego owocu od każdego dostawcy uporządkowanego według znacznika czasu z określonym zakresem. W danych wyjściowych znajduje się wiersz dla każdej odrębnej kombinacji owoców i dostawcy. W kolumnach wyjściowych są wyświetlane owoce, dostawca i tablice: liczba, średnia i cała oś czasu (od 2016-01-01 do 2016-01-10). Wszystkie tablice są sortowane według odpowiedniego znacznika czasu, a wszystkie luki są wypełniane wartościami domyślnymi (0 w tym przykładzie). Wszystkie inne kolumny wejściowe są ignorowane.

T | make-series PriceAvg=avg(Price) default=0
on Purchase from datetime(2016-09-10) to datetime(2016-09-13) step 1d by Supplier, Fruit

Trzy tabele. Pierwsza zawiera nieprzetworzone dane, druga zawiera tylko unikatowe kombinacje data-owoce-dostawca, a trzecia zawiera wyniki serii make-series.

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| make-series avg(metric) on timestamp from stime to etime step interval 
avg_metric Sygnatura czasowa
[ 4.0, 3.0, 5.0, 0.0, 10.5, 4.0, 3.0, 8.0, 6.5 ] [ "2017-01-01T00:00:00.0000000Z", "2017-01-02T00:00:00.0000000Z", "2017-01-03T00:00:00.0000000Z", "2017-01-04T00:00:00.0000000Z", "2017-01-05T00:00:00.0000000Z", "2017-01-06T00:00:00.0000000Z", "2017-01-07T00:00:00.0000000Z", "2017-01-08T00:00:00.0000000Z", "2017-01-09T00:00:00.0000000Z" ]

Gdy dane wejściowe są make-series puste, domyślne zachowanie elementu powoduje wygenerowanie pustego make-series wyniku.

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series avg(metric) default=1.0 on timestamp from stime to etime step interval 
| count 

Wyjście

Liczba
0

Użycie kind=nonempty metody w make-series tworzy wynik niepusty wartości domyślnych:

let data=datatable(timestamp:datetime, metric: real)
[
  datetime(2016-12-31T06:00), 50,
  datetime(2017-01-01), 4,
  datetime(2017-01-02), 3,
  datetime(2017-01-03), 4,
  datetime(2017-01-03T03:00), 6,
  datetime(2017-01-05), 8,
  datetime(2017-01-05T13:40), 13,
  datetime(2017-01-06), 4,
  datetime(2017-01-07), 3,
  datetime(2017-01-08), 8,
  datetime(2017-01-08T21:00), 8,
  datetime(2017-01-09), 2,
  datetime(2017-01-09T12:00), 11,
  datetime(2017-01-10T05:00), 5,
];
let interval = 1d;
let stime = datetime(2017-01-01);
let etime = datetime(2017-01-10);
data
| take 0
| make-series kind=nonempty avg(metric) default=1.0 on timestamp from stime to etime step interval 

Wyjście

avg_metric Sygnatura czasowa
[
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0,
1.0
]
[
"2017-01-01T00:00:00.000000Z",
"2017-01-02T00:00:00.000000Z",
"2017-01-03T00:00:00.000000Z",
"2017-01-04T00:00:00.000000Z",
"2017-01-05T00:00:00.000000Z",
"2017-01-06T00:00:00.000000Z",
"2017-01-07T00:00:00.000000Z",
"2017-01-08T00:00:00.000000Z",
"2017-01-09T00:00:00.000000Z"
]

Używanie wartości make-series i mv-expand do wypełniania brakujących rekordów:

let startDate = datetime(2025-01-06);
let endDate = datetime(2025-02-09);
let data = datatable(Time: datetime, Value: int, other:int)
[
    datetime(2025-01-07), 10, 11,
    datetime(2025-01-16), 20, 21,
    datetime(2025-02-01), 30, 5
];
data
| make-series Value=sum(Value), other=-1 default=-2 on Time from startDate to endDate step 7d
| mv-expand Value, Time, other
| extend Time=todatetime(Time), Value=toint(Value), other=toint(other)
| project-reorder Time, Value, other 

Wyjście

Czas Wartość inny
2025-01-06T00:00:00Z 10 -1
2025-01-13T00:00:00Z 20 -1
2025-01-20T00:00:00Z 0 -2
2025-01-27T00:00:00Z 30 -1
2025-02-03T00:00:00Z 0 -2