Condividi tramite


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 un union o join operatori). È consigliabile usare sample 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| sampleNumberOfRows

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
... ... ... ... ... ...