Dela via


. Operator (punkttecken)

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.

Returer

En typ som matchar värdenas fieldIdentifier eller typen mapExpr .

Namnmatchning har företräde framför den här operatorns lösning. Med tanke på en serie identifierare avgränsade med punkter löser Azure Databricks det längsta möjliga kvalificerade namnet. Om det lösta namnet är ett MAP eller STRUCT om Azure Databricks tolkar de återstående identifierarna med hjälp av punktteckenoperatorn.

När det används med en STRUCTverifierar Azure Databricks förekomsten av fieldIdentifier i -structen när -instruktionen kompileras.

När den används med , MAPoch 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

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

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