Null 값
적용 대상: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Kusto의 모든 스칼라 데이터 형식에는 누락된 값을 나타내는 특수 값이 있습니다. 이 값을 null 값 또는 null이라고 부릅니다.
참고 항목
데이터 형식은 string
null 값을 지원하지 않습니다.
Null 리터럴
스칼라 형식 T 의 null 값은 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 값을 지원하지 않으므로 함수와 isnotempty()
함수를 isempty()
사용하는 것이 좋습니다.
Null 값의 같음 및 같지 않음
- 같음 (
==
): 두 null 값에 같음 연산자를 적용하면 생성됩니다bool(null)
. null 값에 같음 연산자를 적용하면 null이 아닌 값이 생성됩니다bool(false)
. - 같지 않음 (
!=
): 두 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 | 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()
- variance()
- varianceif()
Null 값 및 연산자 where
where 연산자는 부울 식을 사용하여 각 입력 레코드를 출력에 내보내는지 여부를 결정합니다. 이 연산자는 null 값을 마치 null 값으로 처리합니다 bool(false)
. 조건자가 null 값을 반환하는 레코드는 삭제되고 출력에 표시되지 않습니다.
예시:
datatable(ival:int, sval:string)[5, "a", int(null), "b"]
| where ival != 5
출력
ival | sval |
---|---|
null | b |
Null 값 및 이진 연산자
이진 연산자는 두 스칼라 값을 허용하고 세 번째 값을 생성하는 스칼라 연산자입니다. 예를 들어 보다 큼(>) 및 부울 AND(&>)는 이진 연산자입니다.
이 규칙에 대한 예외에 명시된 경우를 제외하고 모든 이진 연산자의 경우 규칙은 다음과 같습니다.
이진 연산자에 입력된 값 중 하나 또는 둘 다 null 값인 경우 이진 연산자의 출력도 null 값입니다. 즉, null 값은 "고정"입니다.
이 규칙에 대한 예외
- 같음(
==
) 및 같지 않음(!=
) 연산자의 경우 값 중 하나가 null이고 다른 값이 null이 아니면 결과는 각각 또는bool(false)
bool(true)
그 결과입니다. - 논리 AND(&> 연산자)의 경우 값
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(!
) 연산자
인수가 null 값인 경우 논리 NOT 연산 자 not() 는 값을 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 |
참고 항목
- Kusto.Explorer에서 위의 쿼리를 실행하면 모든
true
값이 로1
표시되고 모든false
값이 표시됩니다0
. - Kusto는 테이블의 열에 null 값이 없도록 제한하는 방법을 제공하지 않습니다. 즉, SQL
NOT NULL
의 제약 조건과 동일하지 않습니다.
참고 항목
Kusto는 테이블의 열에 null 값이 없도록 제한하는 방법을 제공하지 않습니다. 즉, SQL NOT NULL
의 제약 조건과 동일하지 않습니다.