Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
Все скалярные типы данных в Kusto имеют специальное значение, представляющее отсутствующее значение. Это значение называется значением NULL или NULL.
Примечание.
Тип string данных не поддерживает значения NULL.
Литералы NULL
Значение NULL скалярного типа T представлено языком запросов с помощью null-литерала T(null).
Следующий запрос возвращает одну строку, полную значений NULL:
print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), timespan(null)
Предикаты значений NULL
Скалярная функция isnull() может использоваться для определения, является ли скалярное значение значением NULL. Соответствующая функция isnotnull() может использоваться для определения того, не является ли скалярное значение значением NULL.
Примечание.
string Так как тип не поддерживает значения NULL, рекомендуется использовать isempty() функции и isnotempty() функции.
Равенство и неравенство значений NULL
-
Равенство (
==): применение оператора равенства к двум значениямbool(null)NULL дает. Применение оператора равенства к значению NULL и получениюbool(false)ненулевого значения. -
к двум значениям NULL дает
!=. Применение оператора неравенства к значению NULL и получениюbool(true)ненулевого значения.
Например:
datatable(val:int)[5, int(null)]
| extend IsBiggerThan3 = val > 3
| extend IsBiggerThan3OrNull = val > 3 or isnull(val)
| extend IsEqualToNull = val == int(null)
| extend IsNotEqualToNull = val != int(null)
Выходные данные
| Валь | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
|---|---|---|---|---|
| 5 | правда | правда | неправда | правда |
| ноль | ноль | правда | ноль | ноль |
Значения NULL и функции агрегирования
При применении следующих операторов к сущностям, которые включают значения NULL, значения NULL игнорируются и не учитываются в вычислении.
- ковариации()
- covarianceif()
- ковариант()
- covariancepif()
- dcount()
- dcountif()
- make_bag()
- make_bag_if()
- make_list()
- make_list_if()
- make_set()
- make_set_if()
- stdev()
- stdevif()
- sum()
- sumif()
- дисперсии()
- дисперсификатор()
- дисперсии()
- variancepif()
Значения NULL и where оператор
Оператор where использует логические выражения, чтобы определить, следует ли выдавать каждую входную запись выходным данным. Этот оператор обрабатывает значения NULL, как если бы они были bool(false). Записи, для которых предикат возвращает значение NULL, удаляются и не отображаются в выходных данных.
Например:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Выходные данные
| ival | sval |
|---|---|
| ноль | б |
Значения NULL и двоичные операторы
Двоичные операторы — это скалярные операторы, принимаюющие два скалярных значения и создающие третье значение. Например, больше (>) и логические операторы AND (&>) являются двоичными операторами.
Для всех двоичных операторов, кроме указанных в исключениях этого правила, правило выглядит следующим образом:
Если одно или оба значения, входные для двоичного оператора, являются значениями NULL, выходные данные двоичного оператора также являются значением NULL. Другими словами, значение NULL является "липким".
Исключения из этого правила
- Для операторов равенства (
==) и неравенства (!=) если одно из значений равно NULL, а другое значение не равно NULL, результат будет либоbool(false)bool(true)соответственно. - Для логического оператора AND (>), если одно из значений имеет
bool(false)значение, результат такжеbool(false)является . - Для оператора логического ИЛИ (
||) если одно из значений имеетbool(true)значение, результат такжеbool(true)является.
Например:
datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10
Выходные данные
| Валь | Добавить | Умножение |
|---|---|---|
| 5 | 15 | 50 |
| ноль | ноль | ноль |
Значения NULL и логический оператор NOT (!)
Логический оператор NOT не() возвращает значение bool(null) , если аргумент является значением NULL.
Значения NULL и in оператор
- Оператор in работает как логические или сравнения равенства.
- Оператор
!inведет себя как логическиеANDсравнения неравенства.
Значения NULL и прием данных
Для большинства типов данных отсутствующее значение в источнике данных создает значение NULL в соответствующей ячейке таблицы. Однако столбцы типов string и форматов данных CSV (или CSV-таких) являются исключением из этого правила, а отсутствующее значение создает пустую строку.
Например:
.create table T(a:string, b:int)
.ingest inline into table T
[,]
[ , ]
[a,1]
T
| project a, b, isnull_a=isnull(a), isempty_a=isempty(a), stlen_a=strlen(a), isnull_b=isnull(b)
Выходные данные
| а | б | isnull_a | isempty_a | strlen_a | isnull_b |
|---|---|---|---|---|---|
| неправда | правда | 0 | правда | ||
| неправда | неправда | 1 | правда | ||
| а | 1 | неправда | неправда | 1 | неправда |
Примечание.
- При выполнении приведенного выше запроса в Kusto.Explorer все
trueзначения будут отображаться как1, и всеfalseзначения будут отображаться как0. - Kusto не предлагает способ ограничить столбец таблицы значением NULL. Другими словами, нет эквивалента
NOT NULLограничению SQL.
Примечание.
Kusto не предлагает способ ограничить столбец таблицы значением NULL. Другими словами, нет эквивалента NOT NULL ограничению SQL.