次の方法で共有


Null 値

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

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

string型は null 値をサポートしていないため、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 (&) は二項演算子です。

この規則に対する Exceptions で説明されている場合を除きすべての二項演算子の規則は次のとおりです。

二項演算子に入力された値の一方または両方が 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 追加 Multiply
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 制約に相当するものはありません。