table()

Функция table() ссылается на таблицу, предоставляя ее имя в качестве выражения типа string.

Синтаксис

table(TableName [,DataScope] )

Дополнительные сведения о соглашениях о синтаксисе.

Параметры

Имя Тип Обязательно Описание
TableName string ✔️ Имя таблицы, на которой указывает ссылка. Значение этого выражения должно быть постоянным в точке вызова функции, то есть оно не может изменяться в зависимости от контекста данных.
DataScope string Используется для ограничения ссылки на таблицу данными в соответствии с тем, как эти данные подпадают под действующую политику кэша таблицы. Если используется, фактический аргумент должен быть одним из допустимых значений область данных.

Допустимые значения область данных

Значение Описание
hotcache Будут ссылаться только данные, которые относятся к категории горячего кэша.
all На все данные в таблице будут ссылаться.
default Значение по умолчанию — all, за исключением случаев, когда администратор кластера задал ему значение hotcache .

Возвращаемое значение

table(T) возвращает:

  • Данные из таблицы T , если таблица с именем T существует.
  • Данные, возвращаемые функцией T , если таблица с именем T не существует, но существует функция С именем T . Функция T не должна принимать аргументы и возвращать табличный результат.
  • Семантическая ошибка возникает, если нет таблицы с именем T и функции С именем T.

Примеры

Использование table() для доступа к таблице текущей базы данных

table('StormEvents') | count

Выходные данные

Count
59066

Использование table() внутри операторов let

Приведенный выше запрос можно переписать как определяемую запросом функцию (оператор let), которая получает параметр tableName , который передается в функцию table().

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

Выходные данные

Count
59066

Использование table() в Функциях

Тот же запрос, что и выше, можно переписать для использования в функции, которая получает параметр tableName , который передается в функцию table().

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

Примечание

Такие функции можно использовать только локально, а не в межкластичном запросе.

Использование table() с несконстантным параметром

Параметр, который не является строкой скалярной константы, нельзя передать в функцию table() в качестве параметра.

Ниже приведен пример обходного решения для такого случая.

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

Выходные данные

x
2