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 nullbool(null)
. Menerapkan operator kesetaraan ke hasil nilai null dan nilai non-nullbool(false)
. - Ketidaksetaraan (
!=
): Menerapkan operator ketidaksetaraan ke dua hasil nilai nullbool(null)
. Menerapkan operator ketidaksetaraan ke hasil nilai null dan nilai non-nullbool(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:
- 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()
- variance()
- varianceif()
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 satubool(false)
ataubool(true)
. - Untuk operator logis AND (&&), jika salah satu nilainya adalah
bool(false)
, hasilnya jugabool(false)
. - Untuk operator ATAU (
||
) logis, jika salah satu nilainya adalahbool(true)
, hasilnya jugabool(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 logisAND
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 sebagai1
, dan semuafalse
nilai akan ditampilkan sebagai0
. - Kusto tidak menawarkan cara untuk membatasi kolom tabel agar tidak memiliki nilai null. Dengan kata lain, tidak ada yang setara dengan batasan SQL
NOT 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
.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk