日志服务 资源函数

这篇说说腾讯云日志服务CLS数据加工中res_local和res_rds_mysql两个函数。res_local用于拉取高级配置的环境变量;res_rds_mysql用于从云MySQL拉取数据,支持全量与增量拉取,常与t_table_map实现维度表关联,并给出性能、费用及数据安全说明。 res_local函数:通过指定参数从高级配置中获取环境变量值,支持设置默认值和输出格式。 res_rds_mysql函数:从My。

相关产品
日志服务 产品页,含版本规格、价格与购买入口。

一、函数定义

使用 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 函数从云 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"}]

十一、两种数据拉取方式

支持一次性拉取和增量数据拉取两种数据拉取方式:

·一次性拉取:将一次性拉取 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 修改账号权限。请妥善保管账号信息,不要泄露。

赞 (0)
上一篇 4天前
下一篇 4天前