다음을 통해 공유


.(dot 기호) 연산자

적용 대상: 예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime

STRUCTfieldIdentifier 값 또는 MAPkeyIdentifier에서 값을 반환합니다.

구문

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.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