开发者社区> 成喆> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

日志服务数据加工最佳实践: 从RDS-MySQL拉取数据做富化

简介: 本篇覆盖日志服务数据加工最佳实践: 从RDS-MySQL拉取数据做富化的各种场景, 包括定期刷新拉取所有, 拉取部分数据, 拉取后再过滤数据, 调整返回表格结构等
+关注继续查看

概述

使用全局富化函数做富化时, 需要传递一个字典或者表格结构做富化. 参考构建字典与表格做数据富化的各种途径比较.
本篇介绍从使用资源函数res_rds_mysql从RDS-MySQL拉取数据的做富化的详细实践.关于res_rds_mysql的参数说明, 参考这里.

背景

这里我们在RDS中存放用户信息表格userinfo.
原始数据库表中内容:

id province city uid
1 jiangsu nanjing 01234
2 henan zhengzhou 01235
3 heilongjiang haerbin 01236
4 jiangsu yantai 01237

场景1:定期刷新拉取所有

富化数据如果定期会全量刷新时, 希望数据加工任务能够自动定期去拉取, 可以如下配置:

res_rds_mysql(..., refresh_interval=300)

上述语法会返回一个表格结构, 并且会自动跟踪表格, 每隔5分钟重新拉取一遍mysql 表的内容并刷新这个表格内容。

场景2:拉取部分数据

如果仅仅使用RDS-MySQL中个别字段做富化, 推荐使用参数table, sqlfields来进行或者列过滤. 这样可以降低维表大小, 增加富化效率.

如下进行列过滤, 值选择cityuid列, 两者效果没有任何区别.

res_rds_mysql(..., sql="select city, uid from userinfo")      # 列过滤
res_rds_mysql(..., table="userinfo", fields=["city", "uid"])    # 列过滤

如下使用sql进行列与的行过滤, 选择所有uid > 1234的数据.

res_rds_mysql(..., sql="select * from userinfo where uid > 1234")   # 行过滤
res_rds_mysql(..., sql="select city, uid from userinfo where uid > 1234")   # 行列过滤

场景3:拉取后再过滤数据

在使用参数table, sqlfields来进行或者列过滤不能满足需求时, 可以进一步使用参数fetch_exclude_data和/或fetch_include_data来进行过滤.

例如:

res_rds_mysql(..., fetch_include_data="uid==0123*")   # 保留所有uid以0123开头的数据
res_rds_mysql(..., fetch_exclude_data="uid < 1234")    # 去除所有uid小于1234的数据
res_rds_mysql(..., fetch_include_data="city:n", fetch_exclude_data="uid < 1234") 

参考以上注释了解两者区别, 注意到这里的这两个参数的格式都是查询字符串.
同时配置fetch_exclude_datafetch_include_data, 会优先执行fetch_exclude_data语法,将不符合的数据剔除,然后在执行fetch_include_data语法,将符合的数据添加进来,fetch_exclude_data和fetch_exclude_data参数语法都是根据e_search语法,支持正则匹配,模糊匹配等多种方式,上述第三行语法含义为,拉取表中uid大于等于1234, 且以city包含字母n的所有数据做维表.

注意: 这种过滤是在拉取数据到本地后再进行过滤, 因此效率没有参数table, sqlfields过滤高.

场景4:调整返回表格结构

默认返回的表格列名与RDS-MySQL中的表格结构一致, 如果需要调整, 例如将province字段编程prov等, 可以使用如下方法:

res_rds_mysql(..., sql="select id, uid, province as prov, city from userinfo")
res_rds_mysql(..., table="userinfo", fields=["id", "uid", ("province", "prov"), "city" ])

两个方法是一样效果. 关于fields参数, 可以进一步参考数据列列表

进一步参考

欢迎扫码加入官方钉钉群获得实时更新与阿里云工程师的及时直接的支持:
image

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用阿里云日志服务采集查询kubernetes容器日志
使用阿里云日志收集查询kubernetes容器日志
1790 0
日志服务数据加工最佳实践: 函数调用
本篇介绍日志服务数据加工最佳实践: 函数调用汇总, 如何绕开相关的坑等
1099 0
日志服务数据加工最佳实践: 跨账号多目标logstore数据分发
本篇介绍日志服务数据将: 跨账号多目标logstore数据分发最佳实践, 覆盖如何动态多目标灵活分发.
624 0
日志服务数据加工最佳实践: 多子键为数组的复杂JSON加工
程序构建的日志经常会以一种统计性质的JSON格式写入, 通常其包含一个基础信息, 以及多个子健为数组的形式. 本篇如何使用日志服务数据加工处理多子键为数组的复杂JSON.
591 0
日志服务数据加工最佳实践: 构建字典与表格做数据富化
本篇介绍日志服务数据加工最佳实践: 构建字典与表格做数据富化, 覆盖多种方式: 直接, 任务配置, 字典表格函数, RDS-MySQL, 其他Logstore等
1037 0
日志服务数据加工最佳实践: 日期时间处理
本文介绍日志服务数据加工最佳实践: 日期时间处理, 覆盖日志互转实践, 时区转换, 日期偏移等
1283 0
日志服务(SLS)数据加工功能发布
日志服务用户,您好! 针对日志生命周期内存在的各种数据规整、分发、富化、清洗场景需求,阿里云日志服务(SLS)新推出了“数据加工”功能。 推荐在日志服务上进行数据规整、加工或联合其它数据源做分析的数据工程师使用。
5611 0
日志服务 - 数据加工- Nginx日志解析实践
以nginx日志为例,简单介绍日志服务的数据加工功能
401 0
基于日志服务数据加工分析Java异常日志
采集并脱敏了整个5月份的项目异常日志,准备使用日志服务数据加工做数据清洗以及分析。本案例是基于使用阿里云相关产品(OSS,RDS,SLS等)的SDK展开自身业务。需要对异常日志做解析,将原始日志中时间、错误码、错误信息、状态码、产品信息、请求方法、出错行号提取出来。然后根据提取出来的不同产品信息做多目标分发处理。对清洗后的数据做异常日志数据分析。
0 0
+关注
成喆
不忘初心 方得始终
文章
问答
来源圈子
更多
阿里云存储基于飞天盘古2.0分布式存储系统,产品包括对象存储OSS、块存储Block Storage、共享文件存储NAS、表格存储、日志存储与分析、归档存储及混合云存储等,充分满足用户数据存储和迁移上云需求,连续三年跻身全球云存储魔力象限四强。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
Python 系列直播——深入Python与日志服务,玩转大规模数据分析处理实战第二讲
立即下载
Python第四讲——使用IPython/Jupyter Notebook与日志服务玩转超大规模数据分析与可视化
立即下载
yqdh_58c1349b15e...1510470348.pdf
立即下载