res_local 函数
函数定义
使用 res_local 函数在当前数据加工任务中拉取高级配置中的环境变量。
语法描述
res_local(param, default=None, type="auto")
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
param | 对应高级配置中的环境变量的字段名 | string | 是 | - | - |
default | 字段值不存在时,返回该参数的值,默认值为 None | string | 是 | None | - |
type | 数据输出时的数据格式。 auto(默认值):将原始值转化为 JSON 格式。如果转换失败则返回原始值 JSON:将原始值转化为 JSON 格式。如果转换失败则返回 default 参数的值 raw:返回原始值 | string | 是 | auto | - |
示例
在数据加工的高级配置中,添加了1个环境变量字段为 time_session,值为30。
原始日志:
{}
加工规则:
fields_set("time_session", res_local("time_session"))
加工结果:
{"time_session":"30"}
res_rds_mysql 函数
函数定义
使用 res_rds_mysql 函数从云 MySQL 数据库中拉取数据库表内容或 SQL 执行结果。首次会默认拉取 MySQL 全量数据。该函数可以和 t_table_map() 函数一起使用,用于实现维度表关联的效果。
前置条件
MySQL 侧:如果访问账号限制了主机 IP,请放通169.254.%,详情请参见 MySQL-创建账号。
CLS 数据加工侧:在 新建加工任务 时,打开外部数据源开关,配置您的 MySQL 访问信息。
语法描述
res_rds_mysql(alias, database="数据库的名称", sql="select name from person_info", refresh_interval=0, base_retry_back_off=1, max_retry_back_off=60, update_time_key=None, use_ssl=False)
参数说明
参数名称 | 参数描述 | 参数类型 | 是否必须 | 参数默认值 | 参数取值范围 |
alias | 配置的数据库信息别名 | string | 是 | - | - |
database | 数据库名称 | string | 是 | - | - |
sql | 获取数据的 SQL 语句 | string | 是 | - | - |
refresh_interval | 拉取数据的时间间隔,单位:秒。默认值为0,表示仅全量拉取一次 | number | 否 | 0 | - |
base_retry_back_off | 拉取数据失败后重新拉取的时间间隔,默认值为1,单位:秒 | number | 否 | 0 | - |
max_retry_back_off | 拉取数据失败后重试请求的最大时间间隔。默认值为60,单位:秒,建议使用默认值 | number | 否 | 60 | - |
update_time_key | 用于增量获取数据。如果不配置此参数,则执行全量更新 | string | 否 | - | - |
use_ssl | 是否使用 SSL 协议进行安全连接 | bool | 否 | False | - |
示例
示例1:拉取表中的数据
MySQL 中新建一个表 test,添加如下数据:

原始日志:
[{"user_id": 1},{"user_id": 3}]
加工规则:
//在控制台将外部数据 MySQL 的别名配置为 hm,mysql 的 db 为 test222,表名为 test//从 MySQL 拉取全部数据,使用 t_table_map 函数完成维度表关联t_table_map(res_rds_mysql(alias="hm",database="test222",sql="select * from test"),"user_id",["gameid", "game"])
加工结果:
[{"user_id":"1"},{"game":"wangzhe","gameid":"123","user_id":"3"}]
示例2: 拉取部分数据
MySQL 中新建一个表 test,添加如下数据:

原始日志:
[{"id": 1},{"id": 2},{"id": 3}]
加工规则:
//在控制台将外部数据 MySQL 的别名配置为 hm,mysql 的 db 为 test222,表名为 test//select * from test where region='CN', 从 MySQL 拉取部分region='CN'的数据,使用 t_table_map 函数完成维度表关联t_table_map(res_rds_mysql(alias="hm",database="test222",sql="select * from test where region='CN'"),"id",["game", "game_details"])
加工结果:
[{"game_details":"MOBA手游""game_name":"王者荣耀""id":"1"},{"id":"2"},{"game_details":"开放世界RPG游戏""game_name":"原神""id":"3"}]
Join MySQL 的说明
两种数据拉取方式
支持一次性拉取和增量数据拉取两种数据拉取方式:
一次性拉取:将一次性拉取 MySQL 数据源中的全部数据,适用于数据量固定、无需后续增量更新的场景,如静态配置表、历史归档数据等。
增量数据拉取:需用户指定 MySQL 表中的 update_time_key 字段(该字段需记录数据的时间戳,用于标记数据生成 / 更新时间)。数据加工任务会自动以上一次拉取的“MySQL 数据最大时间戳”为基准,仅拉取大于等于该时间戳的新增或更新数据。适用于需持续同步 MySQL 增量数据的场景,如实时业务表、动态日志关联表等。
数据关联核心逻辑
无论选择哪种拉取方式,CLS 都会先将拉取到的 MySQL 数据在CLS 侧进行缓存,再基于缓存数据与日志数据执行 Join 计算,确保关联过程的稳定性与效率。
性能说明与扩容建议
为保障数据加工效率,需注意以下内容:
数据量限制:参与 Join 计算的总数据量建议控制在100万条以内。若数据量超出此范围,可能导致 Join 计算延迟,影响加工任务整体性能。
扩容支持:若您的 MySQL 数据源数据量较大(需长期稳定关联超100万条数据),可通过腾讯云销售联系我们申请资源扩容,以匹配业务数据关联需求。
如果 MySQL 内数据量较大,建议不要直接将生产环境主数据库关联至 CLS,避免通过 CLS 对数据库发起过于复杂的 SQL 查询,影响生产环境稳定性,建议使用 只读实例。
费用
数据安全
建议创建专门的数据库账号供 CLS 访问 MySQL,尽可能的缩小账号对应的资源及操作权限,CLS 仅需查询权限,无需编辑及删除权限,配置方式请参见 云数据库 MySQL 修改账号权限。请妥善保管账号信息,不要泄露。