资源函数

最近更新时间:2025-09-24 10:59:31

我的收藏

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 查询,影响生产环境稳定性,建议使用 只读实例

费用

MySQL 的数据量会按照 数据加工量 来计量和计费。

数据安全

建议创建专门的数据库账号供 CLS 访问 MySQL,尽可能的缩小账号对应的资源及操作权限,CLS 仅需查询权限,无需编辑及删除权限,配置方式请参见 云数据库 MySQL 修改账号权限。请妥善保管账号信息,不要泄露。