.
(點符號) 運算符號
適用於: Databricks SQL Databricks Runtime
傳fieldIdentifier
回 中的 STRUCT
值,或 中的 MAP
值keyIdentifier
。
語法
structExpr . fieldIdentifier
mapExpr . keyIdentifier
引數
structExpr
:STRUCT
運算式。fieldIdentifier
:內structExpr
欄位的識別碼。mapExpr
MAP
:具有 型STRING
別索引鍵的表達式。keyIdentifier
:符合 中mapExpr
索引鍵值的標識碼。
傳回
符合或 fieldIdentifier
值型別的 mapExpr
型別。
名稱解析的優先順序高於此運算子的解析。
也就是說,假設有一系列 以點分隔的標識符 ,Azure Databricks 會解析最長的可能限定名稱。
如果解析的名稱是 MAP
或 STRUCT
Azure Databricks,則會使用點符號運算符解譯其餘的標識碼。
搭配 STRUCT
使用 時,Azure Databricks 會在編譯 語句時,驗證 結構中是否存在 fieldIdentifier
。
搭配 MAP
使用 時,且沒有符合 keyIdentifier
的索引鍵時,Azure Databricks 會傳回 Null。
若要傳回 NULL
, 請改用 try_element_at 函式。
警告
在 Databricks Runtime 中,如果 spark.sql.ansi.enabled 為 false
,則結果為 NULL
如果找不到相符的索引鍵則 mapExpr
為 。
範例
-- 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