operador sample

Devolve até ao número especificado de linhas aleatórias da tabela de entrada.

Nota

  • sample está orientado para velocidade em vez de distribuição uniforme de valores. Especificamente, significa que não produzirá resultados "justos" se forem utilizados depois de operadores que alojam 2 conjuntos de dados de diferentes tamanhos (como um union ou join operadores). Recomenda-se a utilização sample imediatamente após a referência e os filtros da tabela.
  • sample é um operador não determinista e devolverá um conjunto de resultados diferente sempre que for avaliado durante a consulta. Por exemplo, a consulta seguinte gera duas linhas diferentes (mesmo que se espera que devolva a mesma linha duas vezes).

Syntax

T| sampleNumberOfRows

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Tipo Necessário Descrição
T string ✔️ A expressão tabular de entrada.
NumberOfRows int, long ou real ✔️ O número de linhas a devolver. Pode especificar qualquer expressão numérica.

Exemplos

let _data = range x from 1 to 100 step 1;
let _sample = _data | sample 1;
union (_sample), (_sample)

Saída

x
83
3

Para garantir que, no exemplo acima _sample , é calculado uma vez, pode-se utilizar a função materialize( ):

let _data = range x from 1 to 100 step 1;
let _sample = materialize(_data | sample 1);
union (_sample), (_sample)

Saída

x
34
34

Para amostrar uma determinada percentagem dos seus dados (em vez de um número especificado de linhas), pode utilizar

StormEvents | where rand() < 0.1

Para chaves de exemplo em vez de linhas (por exemplo, 10 IDs de exemplo e obter todas as linhas para estes IDs), pode utilizar sample-distinct em combinação com o in operador .

let sampleEpisodes = StormEvents | sample-distinct 10 of EpisodeId;
StormEvents
| where EpisodeId in (sampleEpisodes)