Compartir a través de


. operador (signo de punto)

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí 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ón STRUCT.
  • fieldIdentifier: identificador para el campo dentro de structExpr.
  • mapExpr: expresión MAP con claves de tipo STRING.
  • keyIdentifier: identificador que coincide con un valor de clave en mapExpr.

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