.
(점 기호) 연산자
적용 대상: Databricks SQL 검사 예 Databricks Runtime
의 fieldIdentifier
값을 반환하거나 의 STRUCT
에 의 keyIdentifier
MAP
값을 반환합니다.
구문
structExpr . fieldIdentifier
mapExpr . keyIdentifier
인수
structExpr
: 식입니다STRUCT
.fieldIdentifier
: 내structExpr
필드의 식별자입니다.mapExpr
MAP
: 형식의 키가 있는 식입니다STRING
.keyIdentifier
: 의 키 값과 일치하는 식별자 입니다mapExpr
.
반환
또는 값의 fieldIdentifier
형식과 일치하는 형식입니다 mapExpr
.
이름 확인이 이 연산자의 해상도보다 우선합니다.
즉, 점으로 구분된 일련의 식별자를 감안할 때 Azure Databricks는 가능한 가장 긴 정규화된 이름을 resolve.
확인된 이름이 이 MAP
거나 STRUCT
Azure Databricks가 점 기호 연산자를 사용하여 나머지 식별자를 해석합니다.
와 함께 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