. (점 기호) 연산자

적용 대상:검사 예 Databricks SQL 검사 예 Databricks Runtime으로 표시됨

fieldIdentifier 값을 반환하거나 의 STRUCT 에 의 keyIdentifierMAP값을 반환합니다.

구문

structExpr . fieldIdentifier

mapExpr . keyIdentifier

인수

  • structExpr: 식입니다 STRUCT .
  • fieldIdentifier: 내 structExpr필드의 식별자입니다.
  • mapExprMAP: 형식의 키가 있는 식입니다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.enabledfalse이면 에 대해 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