Compartilhar via


table()

A função table() faz referência a uma tabela fornecendo seu nome como uma expressão do tipo string.

Sintaxe

table(TableName [, DataScope])

Saiba mais sobre as convenções de sintaxe.

Parâmetros

Nome Digitar Obrigatória Descrição
TableName string ✔️ O nome da tabela que está sendo referenciada. O valor dessa expressão deve ser constante no ponto de chamada para a função, o que significa que não pode variar de acordo com o contexto de dados.
DataScope string Usado para restringir a referência da tabela aos dados de acordo com a forma como esses dados se enquadram na política de cache efetiva da tabela. Se usado, o argumento real deve ser um dos valores de escopo de dados válidos.

Valores de escopo de dados válidos

Valor Descrição
hotcache Somente os dados categorizados como hot cache serão referenciados.
all Todos os dados da tabela serão referenciados.
default O padrão é all, exceto se tiver sido definido hotcache como pelo administrador do cluster.

Devoluções

table(T) retorna:

  • Dados da tabela T se existir uma tabela chamada T .
  • Dados retornados pela função T se uma tabela chamada T não existir, mas uma função chamada T existir. A função T não deve usar argumentos e deve retornar um resultado tabular.
  • Um erro semântico será gerado se não houver nenhuma tabela chamada T e nenhuma função chamada T.

Exemplos

Use table() para acessar a tabela do banco de dados atual

table('StormEvents') | count

Saída

Count
59066

Usar table() dentro de instruções let

A consulta acima pode ser reescrita como uma função definida pela consulta (instrução let) que recebe um parâmetro tableName - que é passado para a função table().

let foo = (tableName:string)
{
    table(tableName) | count
};
foo('StormEvents')

Saída

Count
59066

Usar table() dentro de Funções

A mesma consulta acima pode ser reescrita para ser usada em uma função que recebe um parâmetro tableName - que é passado para a função table().

.create function foo(tableName:string)
{
    table(tableName) | count
};

Observação

Tais funções podem ser usadas apenas localmente e não na consulta entre clusters.

Usar table() com parâmetro não constante

Um parâmetro, que não é uma cadeia de caracteres constante escalar, não pode ser passado como um parâmetro para a table() função.

Abaixo, dado um exemplo de solução alternativa para esse caso.

let T1 = print x=1;
let T2 = print x=2;
let _choose = (_selector:string)
{
    union
    (T1 | where _selector == 'T1'),
    (T2 | where _selector == 'T2')
};
_choose('T2')

Saída

x
2