. (tanda titik) operator

Berlaku untuk:centang ditandai ya Databricks SQL centang ditandai ya Databricks Runtime

Mengembalikan nilai fieldIdentifier dalam STRUCT atau nilai berdasarkan keyIdentifier dalam MAP.

Sintaks

structExpr . fieldIdentifier

mapExpr . keyIdentifier

Argumen

  • structExpr: Sebuah STRUCT ekspresi.
  • fieldIdentifier: Sebuah pengenal untuk bidang dalam structExpr.
  • mapExpr: Ekspresi MAP dengan kunci jenis STRING.
  • keyIdentifier: Pengidentifikasi yang cocok dengan nilai kunci di mapExpr.

Pengembalian

Jenis yang cocok dengan jenis fieldIdentifier atau jenis nilai mapExpr.

Resolusi nama lebih diutamakan daripada resolusi operator ini. Artinya, mengingat serangkaian pengidentifikasi yang dipisahkan oleh titik-titik, Azure Databricks akan menyelesaikan nama terlama yang memenuhi syarat. Jika nama yang diselesaikan adalah MAP atau STRUCT Azure Databricks akan menginterpretasikan pengidentifikasi yang tersisa menggunakan operator tanda titik.

Saat digunakan dengan STRUCT, Azure Databricks memverifikasi keberadaan fieldIdentifier dalam struktur saat pernyataan dikompilasi.

Saat digunakan dengan MAP, dan tidak ada kunci yang cocok keyIdentifier, Azure Databricks mengembalikan null. Untuk mengembalikan NULL , gunakan fungsi try_element_at.

Peringatan

Dalam Databricks Runtime, jika spark.sql.ansi.enabled adalah false, hasilnya adalah NULL apabila tidak ditemukan kunci yang sesuai untuk mapExpr.

Contoh

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