Значения NULL
Область применения: ✅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 даетbool(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)
Выходные данные
val | IsBiggerThan3 | IsBiggerThan3OrNull | IsEqualToNull | IsNotEqualToNull |
---|---|---|---|---|
5 | true | true | false | true |
null | null | true | null | null |
Значения NULL и функции агрегирования
При применении следующих операторов к сущностям, которые включают значения NULL, значения NULL игнорируются и не учитываются в вычислении.
- count()
- count_distinct()
- countif()
- dcount()
- dcountif()
- make_bag()
- make_bag_if()
- make_list()
- make_list_if()
- make_set()
- make_set_if()
- stdev()
- stdevif()
- sum()
- sumif()
- дисперсии()
- дисперсификатор()
Значения NULL и where
оператор
Оператор where использует логические выражения, чтобы определить, следует ли выдавать каждую входную запись выходным данным. Этот оператор обрабатывает значения NULL, как если бы они были bool(false)
. Записи, для которых предикат возвращает значение NULL, удаляются и не отображаются в выходных данных.
Например:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
Выходные данные
ival | sval |
---|---|
null | б |
Значения 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
Выходные данные
val | Добавить | Умножение |
---|---|---|
5 | 15 | 50 |
null | null | null |
Значения 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)
Выходные данные
a | б | isnull_a | isempty_a | strlen_a | isnull_b |
---|---|---|---|---|---|
false | true | 0 | true | ||
false | false | 1 | true | ||
a | 1 | false | false | 1 | false |
Примечание.
- При выполнении приведенного выше запроса в Kusto.Explorer все
true
значения будут отображаться как1
, и всеfalse
значения будут отображаться как0
. - Kusto не предлагает способ ограничить столбец таблицы значением NULL. Другими словами, нет эквивалента
NOT NULL
ограничению SQL.
Примечание.
Kusto не предлагает способ ограничить столбец таблицы значением NULL. Другими словами, нет эквивалента NOT NULL
ограничению SQL.