Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
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 будет разрешать самое длинное возможное полное имя.
Если разрешенным именем является MAP или STRUCT, Azure Databricks интерпретирует оставшиеся идентификаторы с помощью оператора знака точки.
При использовании с STRUCT Azure Databricks проверяет наличие fieldIdentifier в структуре при компиляции инструкции.
При использовании с ключом MAP, который соответствует keyIdentifier, Azure Databricks возвращает значение NULL.
Чтобы вернуть NULL, используйте функцию try_element_at.
Предупреждение
В Databricks Runtime, если для параметра spark.sql.ansi.enabled нет falseNULL соответствующего 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