.
(dot 기호) 연산자
적용 대상: Databricks SQL Databricks Runtime
STRUCT
의 fieldIdentifier
값 또는 MAP
의 keyIdentifier
에서 값을 반환합니다.
구문
structExpr . fieldIdentifier
mapExpr . keyIdentifier
인수
structExpr
:STRUCT
식입니다.fieldIdentifier
:structExpr
내 필드에 대한 식별자입니다.mapExpr
:STRING
형식의 키가 있는MAP
식입니다.keyIdentifier
:mapExpr
의 키 값과 일치하는 식별자입니다.
반품
fieldIdentifier
또는 mapExpr
값의 형식과 일치하는 형식입니다.
이름 확인이 이 연산자의 확인보다 우선합니다.
즉, 점으로 구분된 일련의 식별자가 주어지면 Azure Databricks는 가능한 가장 긴 정규화된 이름을 확인합니다.
확인된 이름이 MAP
또는 STRUCT
인 경우 Azure Databricks는 dot 기호 연산자를 사용하여 나머지 식별자를 해석합니다.
STRUCT
와 함께 사용하면 Azure Databricks는 문이 컴파일될 때 구조체에 fieldIdentifier
가 있는지 확인합니다.
MAP
과 함께 사용할 때 keyIdentifier
와 일치하는 키가 없으면 Azure Databricks는 null을 반환합니다.
대신 NULL
을 반환하려면 try_element_at 함수를 사용합니다.
Warning
Databricks Runtime에서 spark.sql.ansi.enabled가 false
인 경우 mapExpr
에 대한 일치하는 키를 찾을 수 없는 경우 결과는 NULL
입니다.
예제
-- Names take precedence over the dot sign operator
> CREATE SCHEMA a;
> CREATE TABLE a.a(a struct<a INT, b STRING>);
> INSERT INTO a.a VALUES (named_struct('a', 5, 'b', 'Spark'));
-- Column `a` in table `a`
> SELECT a.a FROM a.a;
{"a":5,"b":"Spark"}
-- Field `b` in column `a`
> SELECT a.b FROM a.a;
Spark
-- Column `a` in table `a.a`
> SELECT a.a.a FROM a.a;
{"a":5,"b":"Spark"}
-- Field `a` in column `a` in table `a.a`
> SELECT a.a.a.a FROM a.a;
5
-- Resolving a map value:
> SELECT map('three', 3).three;
3
-- Resolving a map value using the [ ] notation:
> SELECT map('three', 3)['three']
3
-- Resolving a map value using back quotes:
> SELECT map('서울시', 'Seoul').`서울시`;
Seoul
-- Cannot resolve a non existing key
> SELECT map('three', 3).four;
NULL