. Оператор (знак точки)

Область применения:проверка помечено да Databricks SQL проверка помечено да Databricks Runtime

fieldIdentifier Возвращает значение в или STRUCT значение keyIdentifier в MAP.

Синтаксис

structExpr . fieldIdentifier

mapExpr . keyIdentifier

Аргументы

  • structExprSTRUCT: выражение.
  • fieldIdentifier: идентификатор поля в .structExpr
  • mapExprMAP: выражение с ключами типа STRING.
  • keyIdentifier: идентификатор , соответствующий значению ключа в mapExpr.

Возвращает

Тип, соответствующий типу fieldIdentifier или типа значений mapExpr .

Разрешение имен имеет приоритет над разрешением этого оператора. Это значит, что при использовании ряда идентификаторов, разделенных точками, Azure Databricks будет разрешать максимально длинное полное имя. Если разрешенное имя равно или MAPSTRUCT Azure Databricks интерпретирует оставшиеся идентификаторы с помощью оператора знаков точек.

При использовании с STRUCTazure Databricks проверяет наличие fieldIdentifier в структуре при компиляции инструкции.

Если используется с MAP, и нет ключа, соответствующего keyIdentifier, Azure Databricks возвращает значение NULL. Вместо этого используйте NULLфункцию try_element_at.

Предупреждение

Если в Databricks Runtime имеет значение falsespark.sql.ansi.enabled , результатом будетNULL, если соответствующий ключ для mapExprне найден.

Примеры

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