Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Databricks Runtime
Devuelve un valor fieldIdentifier en una STRUCT o un valor por keyIdentifier en una MAP.
Sintaxis
structExpr . fieldIdentifier
mapExpr . keyIdentifier
Argumentos
-
structExpr: expresiónSTRUCT. -
fieldIdentifier: identificador para el campo dentro destructExpr. -
mapExpr: expresiónMAPcon claves de tipoSTRING. -
keyIdentifier: identificador que coincide con un valor de clave enmapExpr.
Devoluciones
Tipo que coincide con el de fieldIdentifier o el tipo de los valores mapExpr.
La resolución de nombres tiene prioridad sobre la resolución de este operador.
Es decir, dada una serie de identificadores separados por puntos, Azure Databricks resolverá el nombre completo más largo posible.
Si el nombre resuelto es una MAP o STRUCT, Azure Databricks interpretará los identificadores restantes mediante el operador de signo de punto.
Cuando se usa con STRUCT, Azure Databricks comprueba la existencia de fieldIdentifier en la estructura cuando se compila la instrucción.
Cuando se usa con MAP y no hay ninguna clave que coincida con keyIdentifier, Azure Databricks devuelve null.
Para devolver NULL en su lugar, use la función try_element_at.
Advertencia
En Databricks Runtime, si spark.sql.ansi.enabled es false, el resultado es NULL si no se encuentra ninguna clave coincidente para el mapExpr.
Ejemplos
-- 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