percentiles_linear_fl()
Funkcja percentiles_linear_fl()
jest funkcją zdefiniowaną przez użytkownika (UDF), która oblicza percentyle przy użyciu interpolacji liniowej między najbliższymi rangami, tą samą metodą używaną przez PERCENTILES programu Excel. INC , funkcja. Natywne funkcje percentyla kusto używają metody najbliższej rangi. W przypadku dużych zestawów wartości różnica między obiema metodami jest nieznaczna i zalecamy użycie funkcji natywnej w celu uzyskania najlepszej wydajności. Aby uzyskać więcej informacji na temat tych i dodatkowych metod obliczania percentyla, zapoznaj się z artykułem percentylowym w Wikipedii.
Funkcja akceptuje tabelę zawierającą kolumnę do obliczenia i opcjonalny klucz grupowania oraz tablicę dynamiczną wymaganych percentyli i zwraca kolumnę zawierającą dynamiczną tablicę wartości percentyla dla każdej grupy.
Składnia
T | invoke percentiles_linear_fl(
,
val_colpct_arr [,
aggr_col ])
Dowiedz się więcej o konwencjach składniowych.
Parametry
Nazwa | Typ | Wymagane | Opis |
---|---|---|---|
val_col | string |
✔️ | Nazwa kolumny zawierającej wartości, za pomocą których mają być obliczane percentyle. |
pct_arr | dynamic |
✔️ | Tablica liczbowa zawierająca wymagane percentyle. Każdy percentyl powinien znajdować się w zakresie [0–100]. |
aggr_col | string |
Nazwa kolumny zawierającej klucz grupowania. |
Definicja funkcji
Funkcję można zdefiniować, osadzając jej kod jako funkcję zdefiniowaną przez zapytanie lub tworząc ją jako funkcję przechowywaną w bazie danych w następujący sposób:
Zdefiniuj funkcję przy użyciu następującej instrukcji let. Nie są wymagane żadne uprawnienia.
Ważne
Instrukcja let nie może być uruchamiana samodzielnie. Po nim musi znajdować się instrukcja wyrażenia tabelarycznego. Aby uruchomić działający przykład percentiles_linear_fl()
polecenia , zobacz Przykład.
let percentiles_linear_fl=(tbl:(*), val_col:string, pct_arr:dynamic, aggr_col:string='')
{
tbl
| extend _vals = column_ifexists(val_col, 0.0)
| extend _key = column_ifexists(aggr_col, 'ALL')
| order by _key asc, _vals asc
| summarize _vals=make_list(_vals) by _key
| extend n = array_length(_vals)
| extend pct=pct_arr
| mv-apply pct to typeof(real) on (
extend index=pct/100.0*(n-1)
| extend low_index=tolong(floor(index, 1)), high_index=tolong(ceiling(index))
| extend interval=todouble(_vals[high_index])-todouble(_vals[low_index])
| extend pct_val=todouble(_vals[low_index])+(index-low_index)*interval
| summarize pct_arr=make_list(pct), pct_val=make_list(pct_val))
| project-away n
};
// Write your query to use the function here.
Przykład
W poniższym przykładzie użyto operatora invoke do uruchomienia funkcji.
Aby użyć funkcji zdefiniowanej przez zapytanie, wywołaj ją po definicji funkcji osadzonej.
let percentiles_linear_fl=(tbl:(*), val_col:string, pct_arr:dynamic, aggr_col:string='')
{
tbl
| extend _vals = column_ifexists(val_col, 0.0)
| extend _key = column_ifexists(aggr_col, 'ALL')
| order by _key asc, _vals asc
| summarize _vals=make_list(_vals) by _key
| extend n = array_length(_vals)
| extend pct=pct_arr
| mv-apply pct to typeof(real) on (
extend index=pct/100.0*(n-1)
| extend low_index=tolong(floor(index, 1)), high_index=tolong(ceiling(index))
| extend interval=todouble(_vals[high_index])-todouble(_vals[low_index])
| extend pct_val=todouble(_vals[low_index])+(index-low_index)*interval
| summarize pct_arr=make_list(pct), pct_val=make_list(pct_val))
| project-away n
};
datatable(x:long, name:string) [
5, 'A',
9, 'A',
7, 'A',
5, 'B',
7, 'B',
7, 'B',
10, 'B',
]
| invoke percentiles_linear_fl('x', dynamic([0, 25, 50, 75, 100]), 'name')
| project-rename name=_key, x=_vals
Dane wyjściowe
name | x | pct_arr | pct_val |
---|---|---|---|
A | [5,7,9] | [0,25,50,75,100] | [5,6,7,8,9] |
B | [5,7,7,10] | [0,25,50,75,100] | [5,6.5,7,7.75,10] |
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