table()

Funkce table() odkazuje na tabulku zadáním jejího názvu jako výrazu typu string.

Syntax

table(TableName [,DataScope] )

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
TableName string ✔️ Název odkazované tabulky. Hodnota tohoto výrazu musí být v okamžiku volání funkce konstantní, což znamená, že se nemůže měnit podle kontextu dat.
DataScope string Slouží k omezení odkazu na tabulku na data podle toho, jak tato data spadají do efektivních zásad mezipaměti tabulky. Pokud se použije, musí být skutečným argumentem jedna z hodnot platného oboru dat.

Platné hodnoty oboru dat

Hodnota Popis
hotcache Budou se odkazovat pouze na data, která jsou kategorizována jako horká mezipaměť.
all Budou odkazována na všechna data v tabulce.
default Výchozí hodnota je all, s výjimkou případů, kdy ji na hotcache hodnotu nastavil správce clusteru.

Návraty

table(T) Vrátí:

  • Data z tabulky T , pokud existuje tabulka s názvem T .
  • Data vrácená funkcí T , pokud tabulka s názvem T neexistuje, ale existuje funkce s názvem T . Funkce T nesmí přijímat žádné argumenty a musí vracet tabulkový výsledek.
  • Pokud neexistuje žádná tabulka s názvem T a žádná funkce s názvem T, vyvolá se sémantická chyba.

Příklady

Použití tabulky table() pro přístup k tabulce aktuální databáze

table('StormEvents') | count

Výstup

Počet
59066

Použití table() uvnitř příkazů let

Výše uvedený dotaz lze přepsat jako funkci definovanou dotazem (příkaz let), která obdrží parametr tableName , který se předává do funkce table().

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

Výstup

Počet
59066

Použití tabulky () ve Functions

Stejný dotaz jako výše lze přepsat tak, aby se použil ve funkci, která obdrží parametr tableName , který se předá do funkce table().

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

Poznámka

Tyto funkce se dají použít jenom místně, a ne v dotazu mezi clustery.

Použití table() s non-konstantním parametrem

Parametr, který není skalárním konstantním řetězcem, nelze funkci předat jako parametr table() .

Níže uvádíme příklad alternativního řešení pro takový případ.

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')

Výstup

x
2