Operatore sample
Si applica a: ✅Microsoft Fabric✅
Restituisce fino al numero specificato di righe casuali dalla tabella di input.
Nota
-
sample
è orientato alla velocità anziché alla distribuzione uniforme dei valori. In particolare, significa che non produrrà risultati "equi" se usati dopo gli operatori che l'unione di 2 set di dati di dimensioni diverse (ad esempio ununion
ojoin
operatori). È consigliabile usaresample
subito dopo il riferimento alla tabella e ai filtri. -
sample
è un operatore non deterministico e restituisce un set di risultati diverso ogni volta che viene valutato durante la query. Ad esempio, la query seguente restituisce due righe diverse, anche se si prevede di restituire la stessa riga due volte.
Sintassi
T| sample
NumberOfRows
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Digita | Obbligatorio | Descrizione |
---|---|---|---|
T | string |
✔️ | Espressione tabulare di input. |
NumberOfRows | int, long o real | ✔️ | Numero di righe da restituire. È possibile specificare qualsiasi espressione numerica. |
Esempi
L'esempio in questa sezione illustra come usare la sintassi per iniziare.
Gli esempi in questo articolo usano tabelle disponibili pubblicamente nel cluster della Guida , ad esempio la tabella
StormEvents
nel database degli esempi.
Gli esempi in questo articolo usano tabelle disponibili pubblicamente, ad esempio la tabella
StormEvents
in Analisi meteo dati di esempio.
Generare un esempio
Questa query crea un intervallo di numeri, campiona un valore e quindi duplica tale esempio.
let _data = range x from 1 to 100 step 1;
let _sample = _data | sample 1;
union (_sample), (_sample)
Output
x |
---|
74 |
63 |
Per assicurarsi che nell'esempio precedente _sample
venga calcolato una sola volta, è possibile usare la funzione materialize():
let _data = range x from 1 to 100 step 1;
let _sample = materialize(_data | sample 1);
union (_sample), (_sample)
Output
x |
---|
24 |
24 |
Generare un campione di una determinata percentuale di dati
Per campionare una determinata percentuale di dati (anziché un numero specificato di righe), è possibile usare
StormEvents | where rand() < 0.1
Output
La tabella contiene le prime righe dell'output. Eseguire la query per visualizzare il risultato completo.
StartTime | EndTime | EpisodeId | EventId | Stato | EventType |
---|---|---|---|---|---|
2007-01-01T00:00:00Z | 2007-01-20T10:24:00Z | 2403 | 11914 | INDIANA | Inondazione |
2007-01-01T00:00:00Z | 2007-01-24T18:47:00Z | 2408 | 11930 | INDIANA | Inondazione |
2007-01-01T00:00:00Z | 2007-01-01T12:00:00Z | 1979 | 12631 | DELAWARE | Pioggia |
2007-01-01T00:00:00Z | 2007-01-01T00:00:00Z | 2592 | 13208 | CAROLINA DEL NORD | Vento temporale |
2007-01-01T00:00:00Z | 2007-01-31T23:59:00Z | 1492 | 7069 | MINNESOTA | Siccità |
2007-01-01T00:00:00Z | 2007-01-31T23:59:00Z | 2240 | 10858 | TEXAS | Siccità |
... | ... | ... | ... | ... | ... |
Generare un esempio di chiavi
Per campionare chiavi anziché righe (ad esempio, 10 ID di esempio e ottenere tutte le righe per questi ID), è possibile usare sample-distinct
in combinazione con l'operatore in
.
let sampleEpisodes = StormEvents | sample-distinct 10 of EpisodeId;
StormEvents
| where EpisodeId in (sampleEpisodes)
Output
La tabella contiene le prime righe dell'output. Eseguire la query per visualizzare il risultato completo.
StartTime | EndTime | EpisodeId | EventId | Stato | EventType |
---|---|---|---|---|---|
2007-09-18T20:00:00Z | 2007-09-19T18:00:00Z | 11074 | 60904 | FLORIDA | Pioggia |
2007-09-20T21:57:00Z | 2007-09-20T22:05:00Z | 11078 | 60913 | FLORIDA | Tornado |
2007-09-29T08:11:00Z | 2007-09-29T08:11:00Z | 11091 | 61032 | ATLANTIC SOUTH | Waterspout |
2007-12-07T14:00:00Z | 2007-12-08T04:00:00Z | 13183 | 73241 | SAMOA AMERICANE | Inondazione flash |
2007-12-11T21:45:00Z | 2007-12-12T16:45:00Z | 12826 | 70787 | KANSAS | Inondazione |
2007-12-13T09:02:00Z | 2007-12-13T10:30:00Z | 11780 | 64725 | KENTUCKY | Inondazione |
... | ... | ... | ... | ... | ... |