Dela via


. (punkttecken) operator

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Returnerar ett fieldIdentifier värde i ett STRUCT eller ett värde med keyIdentifier i en MAP.

Syntax

structExpr . fieldIdentifier

mapExpr . keyIdentifier

Argument

  • structExpr: Ett STRUCT uttryck.
  • fieldIdentifier: En identifierare för fältet i structExpr.
  • mapExpr: Ett MAP uttryck med nycklar av typen STRING.
  • keyIdentifier: En identifierare som matchar ett nyckelvärde i mapExpr.

Retur

En typ som matchar fieldIdentifier eller typen för värdena mapExpr.

Upplösning av namn har företräde framför upplösning av den här operatorn. Givet en serie identifierare avgränsade med punkter, kommer Azure Databricks att lösa upp det längsta möjliga kvalificerade namnet. Om det lösta namnet är ett MAP eller STRUCT kommer Azure Databricks att tolka de återstående identifierarna med punktoperatorn.

När det används med STRUCT verifierar Azure Databricks förekomsten av fieldIdentifier i strukturen när instruktionen kompileras.

När den används med MAP, och det inte finns någon nyckel som matchar keyIdentifier, returnerar Azure Databricks null. Om du vill returnera NULL använder du i stället funktionen try_element_at.

Varning

I Databricks Runtime, om spark.sql.ansi.enabled är false, blir resultatet NULL om ingen matchande nyckel hittas för mapExpr.

Exempel

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