dict_mapping
功能
通过指定字典表和 key,返回该 key 所映射的 value。
此函数的核心目的就为了简化全局字典表的使用:在导入数据到目标表过程中时,StarRocks 会自动根据该函数中的传参从字典表中获取指定 key 所映射的 value,并导入到目标表中。
自 v3.2.5 起,StarRocks 支持该函数。并且注意,StarRocks 存算分离模式暂时不支持该函数。
语法
dict_mapping([<db_name>.]<dict_table>, key_column_expr_list [, <value_column> ] [, <strict_mode>] )
key_column_expr_list ::= key_column_expr [, key_column_expr ... ]
key_column_expr ::= <column_name> | <expr>
参数说明
- 必填参数:
-
[<db_name>.]<dict_table>
: 字典表名,且表必须是主键模型表。支持的数据类型为 VARCHAR。 -
key_column_expr_list
:指定字典表 key 列的表达式列表,由一个或多个表达式key_column_expr
组成,表达式key_column_expr
可以是字典表中 key 列名,也可以是具体的 key 或 key 表达式。该表达式列表必须包括字典表的所有主键列,即表达式的个数必须和字典表中所有主键列的个数相同。所以如果字典表使用联合主键,则该表达式列表中的表达式和字典表表结构中定义的主键列必须按位置一一对应,多个表达式之间用英文逗号分隔(
,
)。并且如果key_column_expr
是一个具体的 key 或 key 表达式,则其类型必须和对应的字典表中的列的类型相同。
-
- 可选参数:
<value_column>
:value 列名,也就是映射列名。如果不指定,则默认为字典表的自增列。value 列也可以定义为字典表中除自增列和主键以外的列,并且对列的数据类型无限制。<strict_mode>
:是否启用严格模式,即在未找到与该 key 呈映射关系的 value 时,是否返回报错。如果为TRUE
,则返回报错。如果为FALSE
(默认),则返回NULL
。
返回值说明
返回值的数据类型与 value 列的数据类型保持一致。如果 value 列为字典表的自增列,则返回值的数据类型为 BIGINT。
然而当未找到与该 key 呈映射关系的 value 时,如果为 strict_mode
参数为默认的 FALSE
,则返回 NULL
。如果为 TRUE
,则返回报错 ERROR 1064 (HY000): In strict mode, query failed if record not exist in dict table.
。