.
(點符號) 運算子
適用于: 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
,則如果找不到相符的 mapExpr
索引鍵,則結果為 NULL
。
例子
-- 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