Megosztás a következőn keresztül:


. (pontjel) operátor

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime

Egy fieldIdentifier értéket STRUCT formájában vagy keyIdentifier módon MAP formájában ad vissza.

Szintaxis

structExpr . fieldIdentifier

mapExpr . keyIdentifier

Argumentumok

  • structExpr: Egy STRUCT kifejezés
  • fieldIdentifier: Egy structExprmezőn belüli azonosító.
  • mapExpr: Típuskulcsokat MAPSTRINGtartalmazó kifejezés.
  • keyIdentifier: A mapExprkulcsértékének megfelelő azonosító.

Visszatérítések

A fieldIdentifier vagy a mapExpr érték típusának megfelelő típus.

A nevek feloldása elsőbbséget élvez az operátor felbontásával szemben. Vagyis adott egy, a pontokkal elválasztott azonosítók sorozata , az Azure Databricks a lehető leghosszabb minősített nevet fogja azonosítani. Ha a feloldott név egy MAP vagy STRUCT az Azure Databricks a pontjel operátorral értelmezi a fennmaradó azonosítókat.

STRUCTAz Azure Databricks az utasítás fordításakor ellenőrzi, hogy létezik-e fieldIdentifier a szerkezetben.

Ha egy MAP-vel használják, és nincs keyIdentifier kulcs, amely egyezik, az Azure Databricks null értéket ad vissza. Ehelyett a NULL visszaadása helyett használja a try_element_at függvényt.

Figyelmeztetés

A Databricks Runtime környezetében, ha a spark.sql.ansi.enabledfalse, az eredmény NULL lesz, ha nem található megfelelő kulcs a mapExpr számára.

Példák

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