Compartilhar via


Operador sample

Retorna até o número especificado de linhas aleatórias da tabela de entrada.

Observação

  • sample é voltado para a velocidade e não mesmo para a distribuição de valores. Especificamente, isso significa que ele não produzirá resultados "justos" se usado após operadores que unirem 2 conjuntos de dados de tamanhos diferentes (como um union ou join operadores). Recomenda-se usar sample logo após a referência da tabela e os filtros.
  • sample é um operador não determinístico e retornará um conjunto de resultados diferente cada vez que for avaliado durante a consulta. Por exemplo, a consulta a seguir produz duas linhas diferentes (mesmo que se espere retornar a mesma linha duas vezes).

Sintaxe

Número T | sample de Linhas

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
T string ✔️ A expressão tabular de entrada.
NumberOfRows int, longo ou real ✔️ Número de linhas a ser retornado. Você 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 seja calculado uma vez, pode-se usar 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 obter uma amostra de uma determinada porcentagem de seus dados (em vez de um número especificado de linhas), você pode usar

StormEvents | where rand() < 0.1

Para obter exemplos de chaves em vez de linhas (por exemplo - exemplo 10 Ids e obter todas as linhas para esses Ids), você pode usar sample-distinct em combinação com o in operador.

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