Null 値

Kusto のすべてのスカラー データ型には、欠損値を表す特別な値が含まれています。 この値は、null 値または nullと呼ばれます。

Note

string データ型は null 値をサポートしていません。

null リテラル

スカラー型 T の null 値は、null リテラル T(null) によってクエリ言語で表されます。

次のクエリでは、null 値を持つ 1 つの行が返されます。

print bool(null), datetime(null), dynamic(null), guid(null), int(null), long(null), real(null), double(null), timespan(null)

Null 値の述語

スカラー関数 isnull() は、スカラー値が null 値かどうかを判断するために使用できます。 対応する関数 isnotnull() を使用すると、スカラー値が null 値でないかどうかを判断できます。

Note

型は null 値をstringサポートしていないため、 関数と 関数をisempty()isnotempty()使用することをお勧めします。

Null 値の等値および非等値

  • 等値 値 (==): 2 つの null 値に等値演算子を適用すると、bool(null) が生成されます。 Null 値と null 以外の値に等値演算子を適用すると、bool(false) が生成されます。
  • 非等値 (!=): 2 つの null 値に非等値演算子を適用すると、bool(null) が生成されます。 非等値演算子を 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 IsEqualToNull
5 true TRUE false true
null null true null null

Null 値と集計関数

null 値を含むエンティティに次の演算子を適用する場合、null 値は無視され、計算には考慮されません。

Null 値と where 演算子

where 演算子はブール式を使用して、各入力レコードを出力に出力するかどうかを判断します。 この演算子は、null 値を bool(false) として扱います。 述語が null 値を返すレコードは削除され、出力には表示されません。

次に例を示します。

datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5

出力

ival sval
null b

Null 値と 2 項演算子

二項演算子は、2 つのスカラー値を受け取り、3 番目の値を生成するスカラー演算子です。 たとえば、より大きい (>) とブール値 AND (&&) は二項演算子です。

この規則の例外」に記載されている場合を除き、すべての二項演算子の場合、規則は次のようになります。

二項演算子に入力された値の一方または両方が null 値の場合、二項演算子の出力も null 値になります。 つまり、null 値は「固定」です。

このルールの例外を以下に示します。

  • 等値 (==) 演算子と非等値演算子 (!=) では、いずれかの値が null で、もう一方の値が null でない場合、結果 はそれぞれ bool(false) または bool(true) になります。
  • 論理 AND (&&) 演算子の場合、値の 1 つが の bool(false)場合、結果も bool(false)になります。
  • 論理 OR (||) 演算子の場合、いずれかの値が 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 演算子 not() は、引数が null 値の場合に bool(null) 値を生成します。

Null 値と in 演算子

  • In 演算子は、論理 OR の等価比較のように動作します。
  • 演算子は !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 b isnull_a isempty_a strlen_a isnull_b
    false true 0 true
    false false 1 true
a 1 false false 1 false

Note

  • 上記のクエリを Kusto エクスプローラーで実行すると、すべて true の値が 1 として表示され、すべて false の値が 0 として表示されます。
  • Kusto では、テーブルの列が null 値を持つことを制限する方法は提供されていません。 言い換えれば、SQLの NOT NULL 制約に相当するものはありません。

Note

Kusto では、テーブルの列が null 値を持つことを制限する方法は提供されていません。 言い換えれば、SQLの NOT NULL 制約に相当するものはありません。