Поделиться через


table()

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

Синтаксис

table(TableName [, DataScope])

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

Параметры

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

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

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

Возвраты

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

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

Примеры

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

table('StormEvents') | count

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

Count
59 066

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

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

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

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

Count
59 066

Использование 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