plug-in rolling_percentile()
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati
Restituisce una stima per il percentile specificato del popolamento ValueColumn in una finestra di dimensioni BinsPerWindow in sequenza per BinSize.
Il plug-in viene richiamato con l'operatore evaluate
.
Sintassi
T rolling_percentile(
| evaluate
ValueColumn,
Percentile,
IndexColumn,
BinSize,
BinsPerWindow [,
dim1,
dim2,
...])
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
T | string |
✔️ | Espressione tabulare di input. |
ValueColumn | string |
✔️ | Nome della colonna utilizzata per calcolare i percentili. |
Percentile | int, long o real | ✔️ | Scalare con il percentile da calcolare. |
IndexColumn | string |
✔️ | Nome della colonna su cui eseguire la finestra in sequenza. |
BinSize | int, long, real, datetime o timespan | ✔️ | Scalare con dimensioni dei bin da applicare su IndexColumn. |
BinsPerWindow | int |
✔️ | Numero di contenitori inclusi in ogni finestra. |
dim1, dim2, ... | string |
Elenco delle colonne delle dimensioni in base a cui eseguire la sezione. |
Valori restituiti
Restituisce una tabella con una riga per ogni contenitore (e combinazione di dimensioni se specificato) con il percentile in sequenza dei valori nella finestra che termina in corrispondenza del bin (inclusivo). Lo schema della tabella di output è:
IndexColumn | dim1 | ... | dim_n | rolling_BinsPerWindow_percentile_ValueColumn_Pct |
---|
Esempi
Valore mediano di 3 giorni al giorno
La query successiva calcola un valore mediano di 3 giorni nella granularità giornaliera. Ogni riga nell'output rappresenta il valore mediano per gli ultimi 3 bin (giorni), incluso il bin stesso.
let T =
range idx from 0 to 24 * 10 - 1 step 1
| project Timestamp = datetime(2018-01-01) + 1h * idx, val=idx + 1
| extend EvenOrOdd = iff(val % 2 == 0, "Even", "Odd");
T
| evaluate rolling_percentile(val, 50, Timestamp, 1d, 3)
Output
Timestamp: | rolling_3_percentile_val_50 |
---|---|
2018-01-01 00:00:00.0000000 | 12 |
2018-01-02 00:00:00.0000000 | 24 |
2018-01-03 00:00:00.0000000 | 36 |
2018-01-04 00:00:00.0000000 | 60 |
2018-01-05 00:00:00.0000000 | 84 |
2018-01-06 00:00:00.0000000 | 108 |
2018-01-07 00:00:00.0000000 | 132 |
2018-01-08 00:00:00.0000000 | 156 |
2018-01-09 00:00:00.0000000 | 180 |
2018-01-10 00:00:00.0000000 | 204 |
Valore mediano di 3 giorni al giorno per dimensione
Lo stesso esempio riportato sopra, ma ora calcola anche la finestra mobile partizionata per ogni valore della dimensione.
let T =
range idx from 0 to 24 * 10 - 1 step 1
| project Timestamp = datetime(2018-01-01) + 1h * idx, val=idx + 1
| extend EvenOrOdd = iff(val % 2 == 0, "Even", "Odd");
T
| evaluate rolling_percentile(val, 50, Timestamp, 1d, 3, EvenOrOdd)
Output
Timestamp: | EvenOrOdd | rolling_3_percentile_val_50 |
---|---|---|
2018-01-01 00:00:00.0000000 | Even | 12 |
2018-01-02 00:00:00.0000000 | Even | 24 |
2018-01-03 00:00:00.0000000 | Even | 36 |
2018-01-04 00:00:00.0000000 | Even | 60 |
2018-01-05 00:00:00.0000000 | Even | 84 |
2018-01-06 00:00:00.0000000 | Even | 108 |
2018-01-07 00:00:00.0000000 | Even | 132 |
2018-01-08 00:00:00.0000000 | Even | 156 |
2018-01-09 00:00:00.0000000 | Even | 180 |
2018-01-10 00:00:00.0000000 | Even | 204 |
2018-01-01 00:00:00.0000000 | Strano | 11 |
2018-01-02 00:00:00.0000000 | Strano | 23 |
2018-01-03 00:00:00.0000000 | Strano | 35 |
2018-01-04 00:00:00.0000000 | Strano | 59 |
2018-01-05 00:00:00.0000000 | Strano | 83 |
2018-01-06 00:00:00.0000000 | Strano | 107 |
2018-01-07 00:00:00.0000000 | Strano | 131 |
2018-01-08 00:00:00.0000000 | Strano | 155 |
2018-01-09 00:00:00.0000000 | Strano | 179 |
2018-01-10 00:00:00.0000000 | Strano | 203 |