Nilai null

Semua tipe data skalar di Kusto memiliki nilai khusus yang mewakili nilai yang hilang. Nilai ini disebut nilai null, atau null.

Catatan

string Tipe data tidak mendukung nilai null.

Harfiah null

Nilai null dari tipe skalar T diwakili dalam bahasa kueri oleh harfiah null T(null).

Kueri berikut mengembalikan baris tunggal yang penuh dengan nilai null:

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

Predikat pada nilai null

Fungsi skalar isnull() dapat digunakan untuk menentukan apakah nilai skalar adalah nilai null. Fungsi yang sesuai isnotnull() dapat digunakan untuk menentukan apakah nilai skalar bukan nilai null.

Catatan

string Karena jenis tidak mendukung nilai null, sebaiknya gunakan isempty() fungsi dan isnotempty() .

Kesetaraan dan ketidaksetaraan nilai null

  • Kesetaraan (==): Menerapkan operator kesetaraan ke dua hasil nilai null bool(null). Menerapkan operator kesetaraan ke hasil nilai null dan nilai non-null bool(false).
  • Ketidaksetaraan (!=): Menerapkan operator ketidaksetaraan ke dua hasil nilai null bool(null). Menerapkan operator ketidaksetaraan ke hasil nilai null dan nilai non-null bool(true).

Contohnya:

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)

Output

val IsBiggerThan3 IsBiggerThan3OrNull IsEqualToNull IsNotEqualToNull
5 true TRUE salah true
null null true null null

Nilai null dan fungsi agregasi

Saat menerapkan operator berikut ke entitas yang menyertakan nilai null, nilai null diabaikan dan tidak memperhitungkan perhitungan:

Nilai null dan where operator

Operator where menggunakan ekspresi Boolean untuk menentukan apakah akan memancarkan setiap rekaman input ke output. Operator ini memperlakukan nilai null seolah-olah itu adalah mereka bool(false). Rekaman yang mengembalikan predikat nilai null dijatuhkan dan tidak muncul dalam output.

Contohnya:

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

Output

ival sval
null b

Nilai null dan operator biner

Operator biner adalah operator skalar yang menerima dua nilai skalar dan menghasilkan nilai ketiga. Misalnya, yang lebih besar dari (>) dan Boolean AND (&&) adalah operator biner.

Untuk semua operator biner, kecuali seperti yang disebutkan dalam Pengecualian untuk aturan ini, aturannya adalah sebagai berikut:

Jika salah satu atau kedua nilai input ke operator biner adalah nilai null, maka output dari operator biner juga merupakan nilai null. Dengan kata lain, nilai null bersifat "lengket".

Pengecualian untuk aturan ini

  • Untuk operator kesetaraan (==) dan ketidaksetaraan (!=), jika salah satu nilainya null dan nilai lainnya tidak null, maka masing-masing hasilnya adalah salah satu bool(false) atau bool(true).
  • Untuk operator logis AND (&&), jika salah satu nilainya adalah bool(false), hasilnya juga bool(false).
  • Untuk operator ATAU (||) logis, jika salah satu nilainya adalah bool(true), hasilnya juga bool(true).

Contohnya:

datatable(val:int)[5, int(null)]
| extend Add = val + 10
| extend Multiply = val * 10

Output

val Menambahkan Pengalian
5 15 50
null null null

Nilai null dan operator NOT (!) logis

Operator logika TIDAK tidak() menghasilkan nilai bool(null) jika argumennya adalah nilai null.

Nilai null dan in operator

  • Dalam operator berperilaku seperti OR logis dari perbandingan kesetaraan.
  • Operator !in berperilaku seperti logis AND perbandingan ketidaksamaan.

Nilai null dan penyerapan data

Untuk sebagian besar tipe data, nilai yang hilang dalam sumber data menghasilkan nilai null di sel tabel yang sesuai. Namun, kolom format data tipe string dan CSV (atau seperti CSV) adalah pengecualian untuk aturan ini, dan nilai yang hilang menghasilkan karakter kosong.

Contohnya:

.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)

Output

a b isnull_a isempty_a strlen_a isnull_b
    salah true 0 true
    false false 1 true
a 1 false false 1 salah

Catatan

  • Jika Anda menjalankan kueri di atas di Kusto.Explorer, semua true nilai akan ditampilkan sebagai 1, dan semua false nilai akan ditampilkan sebagai 0.
  • Kusto tidak menawarkan cara untuk membatasi kolom tabel agar tidak memiliki nilai null. Dengan kata lain, tidak ada yang setara dengan batasan SQLNOT NULL.

Catatan

Kusto tidak menawarkan cara untuk membatasi kolom tabel agar tidak memiliki nilai null. Dengan kata lain, tidak ada yang setara dengan batasan SQLNOT NULL.