SET

SET
SET
命令用于在当前会话中设置 SQL 引擎参数。参数仅在当前会话内生效,会话结束后自动恢复默认值。

语法

SET <parameter_name> = <value>

会话参数列表

参数名称取值范围默认值描述
query_tag
query_tag
字符串标记查询的 SQL,可在作业历史中过滤
schedule_job_queue_priority
schedule_job_queue_priority
0-90作业优先级,数值越大优先级越高
cz.sql.group.by.having.use.alias.first
cz.sql.group.by.having.use.alias.first
true/falsefalseGROUP BY / HAVING 是否优先使用列别名
cz.sql.double.quoted.identifiers
cz.sql.double.quoted.identifiers
true/falsefalse双引号是否作为分隔符标识符(开启后双引号不再表示字符串)
cz.sql.cast.mode
cz.sql.cast.mode
tolerant/stricttolerantCAST 转换模式,strict 模式下转换失败会报错
cz.optimizer.enable.mv.rewrite
cz.optimizer.enable.mv.rewrite
true/falsefalse是否开启 Materialized View 查询改写
cz.sql.string.literal.escape.mode
cz.sql.string.literal.escape.mode
backslash/quote/quote_backslashbackslash字符串转义字符模式
cz.sql.arithmetic.mode
cz.sql.arithmetic.mode
tolerant/stricttolerant算术运算出错时是否抛出异常
cz.sql.timezone
cz.sql.timezone
时区名称设置 SQL 会话时区,如
Asia/Shanghai
Asia/Shanghai
UTC
UTC
cz.sql.remote.udf.lookup.policy
cz.sql.remote.udf.lookup.policy
builtin_first/udf_first/schema_onlyschema_onlyUDF 与内置函数的解析优先级
cz.sql.type.conversion
cz.sql.type.conversion
hive兼容 Hive 的类型转换规则
cz.sql.function.from.unixtime.trim.to.second
cz.sql.function.from.unixtime.trim.to.second
false/truefalseFROM_UNIXTIME 精度截断到秒级(兼容 Hive)
cz.sql.time.parser.strict.mode
cz.sql.time.parser.strict.mode
false/truefalse时间解析严格模式,格式不匹配时报错而非返回 NULL
cz.sql.cast.string.to.integer.allow.truncate
cz.sql.cast.string.to.integer.allow.truncate
false/truefalse字符串转整数时允许截断小数位(兼容 Hive)
cz.sql.translation.mode
cz.sql.translation.mode
postgresql/mysql/doris/hive/prestoSQL 方言自动转换模式(预览功能)
cz.sql.compatible.target
cz.sql.compatible.target
mysql/pg指定函数兼容目标引擎(配合 translation.mode 使用)

使用示例

-- 设置时区 SET cz.sql.timezone = 'Asia/Shanghai'; -- 设置查询标签 SET query_tag = 'etl_job'; -- 设置 CAST 为严格模式 SET cz.sql.cast.mode = strict; -- 设置作业优先级 SET schedule_job_queue_priority = 5;

在 Python SDK 中设置参数

from clickzetta import connect conn = connect(username='', password='', service='...', instance='...', workspace='...', schema='public', vcluster='default') my_param = {'hints': {'cz.sql.timezone': 'UTC+00'}} cursor = conn.cursor() cursor.execute("SELECT current_timestamp();", my_param)

在 JDBC URL 中设置参数

jdbc:clickzetta://instance.region.api.clickzetta.com/workspace?schema=public&query_tag=my_app


参数详细说明

query_tag

设置后,会话中所有查询作业的历史记录都会带上该标签,可在作业历史中过滤:

SET query_tag = 'aa'; SELECT 1; -- 在 information_schema 中过滤 SELECT * FROM information_schema.job_history WHERE query_tag = 'aa'; -- 在 SHOW JOBS 中过滤 SHOW JOBS WHERE query_tag = 'aa' LIMIT 100;

cz.sql.double.quoted.identifiers

开启后双引号作为分隔符标识符,不再表示字符串

SET cz.sql.double.quoted.identifiers = true; -- 此时 "column_name" 是标识符,不是字符串

cz.sql.cast.mode

-- strict 模式:转换失败报错 SET cz.sql.cast.mode = strict; SELECT CAST('abc' AS INT); -- 报错 -- tolerant 模式(默认):转换失败返回 NULL SET cz.sql.cast.mode = tolerant; SELECT CAST('abc' AS INT); -- NULL

cz.sql.arithmetic.mode

-- tolerant 模式(默认):除以 0 返回 NULL SELECT 2/0; -- NULL -- strict 模式:除以 0 报错 SET cz.sql.arithmetic.mode = strict; SELECT 2/0; -- 报错

cz.sql.timezone

SET cz.sql.timezone = 'Asia/Shanghai'; SELECT NOW(); -- 返回北京时间 SET cz.sql.timezone = 'UTC'; SELECT NOW(); -- 返回 UTC 时间

cz.sql.string.literal.escape.mode

-- 默认 backslash 模式 SELECT 'Hello \n World!'; -- 换行 -- quote 模式:用两个单引号表示一个单引号 SET cz.sql.string.literal.escape.mode = QUOTE; SELECT 'It''s a beautiful day'; -- It's a beautiful day -- quote_backslash 模式:同时支持两种转义 SET cz.sql.string.literal.escape.mode = quote_backslash;

cz.sql.translation.mode(预览功能)

将指定 SQL 方言自动转换为 Lakehouse 原生语法:

SET cz.sql.translation.mode = doris; SELECT DATE_ADD(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR); -- 配合 compatible.target 使用 SET cz.sql.compatible.target = mysql; SELECT DATE_FORMAT(CURRENT_DATE(), '%x-%v %a %W');

cz.sql.remote.udf.lookup.policy

-- 默认 schema_only:使用 UDF 必须带 Schema 前缀 SELECT public.my_func(); -- builtin_first:优先使用内置函数 SET cz.sql.remote.udf.lookup.policy = builtin_first; SELECT my_func(); -- udf_first:优先使用 UDF SET cz.sql.remote.udf.lookup.policy = udf_first; SELECT my_func();

schedule_job_queue_priority

-- 设置高优先级(0-9,越大越高) SET schedule_job_queue_priority = 8; SELECT * FROM large_table;

cz.sql.time.parser.strict.mode

SET cz.sql.time.parser.strict.mode = true; SELECT TO_TIMESTAMP('2025-08-01', 'yyyy-MM-dd HH'); -- 报错(格式不匹配) SET cz.sql.time.parser.strict.mode = false; SELECT TO_TIMESTAMP('2025-08-01', 'yyyy-MM-dd HH'); -- NULL

cz.sql.cast.string.to.integer.allow.truncate

SELECT CAST('11.4' AS INT); -- NULL(默认) SET cz.sql.cast.string.to.integer.allow.truncate = true; SELECT CAST('11.4' AS INT); -- 11(截断小数)

相关文档

联系我们
预约咨询
微信咨询
电话咨询