数据治理-报表治理

报表治理背景

大家在开发中会遇到这样一种情况,我们的日常任务/数据表都是不断上线的,但持续上线会导致存储、计算资源飙升,导致部门每年资源预算都不充足,因此每年给大老板报预算时候预算都在增长,同时内部数据表、报表想下线时,由于不清楚有没有被使用,都被阻拦,因此产生恶心循环,目前线上报表大多数都是一次性的,可能是为了某个项目的业务侧阶段汇报、大老板想简单看个数据分布从而制定决策,因此对于无效报表、无效任务、无效数据表都可以进行治理优化,同时也需要对报表进行加速查询从而提效。

报表治理思考(治理前)

由于线上报表过多,同时很多报表业务方都在使用,如果直接上手则会导致业务投诉,因此需要先排查哪些报表还有存在价值->从而再去定位对应数据表、任务->下线后看到收益->梳理出核心报表再放入数据门户中。

报表梳理

在期初先梳理哪些任务下游有报表在使用,在网易easy data可以通过查看下游影响对象从而知道哪些数据表下游有报表进行捞取,可以直接通过元数据捞取。

如没有打通报表和数据源之间的血缘也可以手动去统计报表梳理报表使用方、核心等级、使用的数据表、最近7天访问等。

报表名称

报表用途

报表使用方

使用的数据表

最近7天报表访问量

报表截图

商品营销数据大盘

用于查看各类商品营销情况,方便运营活动策略分析

商品运营、数据分析

ads_xx_xx

ads_xxx_xxx

13

报表确认

根据梳理使用情况后,可以根据7日访问小于等于2的报表进行治理,在治理之前还需与业务方进行沟通,如业务方觉得这个报表他做不了主则可以上升leader去问,如最终决定保留报表(需要给出理由)则可以约定不下线报表,下线任务缩短存储分区生命周期方便历史全量回溯。

报表治理流程(治理中)

报表下线

这里报表下线要区别是需要留存的报表还是可以直接下线的报表,这里有一定区别,可以直接下线的报表是跟业务方确认后完全没人使用及近7天访问量跌0的报表,可以直接点击报表下线,至于需不需要删除则看当前空间内部报表数量,例如空间存放的报表较少资源不足则可以。

报表对应数据表及任务下线/冻结

在确定要下线报表后找到对应ads表、ads任务,对于直接下线的报表可以直接下线任务(下线的任务一定是没有下游血缘的),对于数据表可删除,但下线的任务记得保留,可以备注已废弃,就怕未来可能要回滚。

对于不确定保留的报表可以保留报表,下线任务,缩短数据表生命周期例如保留7天,如果是核心任务场景报表也不清楚要不要下线可以不下线报表、缩短生命周期,取消基线配置,将任务时间定到午休时,这样不会影响线上其他任务使用资源还可以保障报表有数据。

报表资源治理

对于线上运行的报表有时运行很慢也会被业务方反馈,因此报表除了有效之外还需要查询高效

(1)对于报表首先需要看报表运行时间,网易有数具备报表运行检测功能,可检测出报表查询耗时方便观测,同时跑数据集时也有查询时间也可以通过此评测。

(2)对于未使用olap查询也需要改造,将原来通过maxcompute、spark运行改成olap加速(阿里云adb、star rocks),将ads表传输至olap中即可。

(3)预计算,语兴发现很多报表跑不动原因在于使用大量明细数据,都通过dwd直接连接,并在报表上去做指标,这样也会大大降低查询效率,可以先将指标计算好后在报表上展示,但对于使用多维度筛选尤其是时间维度时则需要慎重,例如审核数据报表,里面存在发布时间、审核时间(时间还会通过每日快照去变化),xxx时间等,如果通过预计算去跑则指标会被定死,导致不能灵活查询,因此对于这种数据只能限制map端,通过少读数据(限制时间+其他字段)减少后续计算压力,至于要读取dwd最近多少天的数据则可以与业务方商量。

同时对于5mi、30mi数据就不要走离线任务了,通过flink将数据落olap,在报表聚合当日数据,对于历史数据还读离线表即可,最终在数据集进行union all

select xxx
      ,xxx
from dwd_xxx_xxx_ri --实时数据

union all 

select xxx
      ,xxx
from dwd_xxx_xxx_df --离线数据

报表权限治理

报表权限隔离尤为重要,语兴建议这里按照空间隔离更好,例如基础中台一个空间、社区一个空间、金融一个空间,同时不同账号需要设置到对应空间权限,同时同空间报表也需要隔离。

但权限治理其实在语兴看来是挺鸡肋的一件事,如果是买三方服务例如阿里quick bi、网易有数都是有账号数量的,如果选择不对外展示那就要准备足够多的账号,最后会形成多个人用一个阿里云账号情况(这种情况在业务侧使用时遇到了多次),甚至还会相互借用,防了,但不一定防得住。

报表维护(治理后)

在治理后可以将核心报表维护到数据门户中按照主题域进行分类管理形成一站式管理,解决了业务方找不到核心报表问题。

同时报表治理也是持续性治理,后续可通过python代码将每周访问量低的报表推送给对应的负责人进行提醒,确认治理给予反馈及督促下线处理,当然治理还是长期的事,对于报表治理可以1年做一次清理打扫。

治理价值

(1)释放无用ads数据表、缩短数据表生命周期采用标准ttl总计40+,存储资源xxT,下线无用报表对应数据任务30+,降低夜间任务并行;

(2)释放无人使用报表资源20+,打造数据门户,完成近80+报表维护;

(3)通过预计算、olap切换、map侧限制实现30+报表平均返回时间从38s下降至10s内;

#java##数据人offer决赛圈怎么选##我想象的实习vs现实的实习##牛客创作赏金赛##实习必须要去大厂吗?#
全部评论

相关推荐

在 Egg.js 中,你可以通过以下方式来实现缓存控制和 CDN 加速:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&uuid=1730841bd8554b2fa6de4161e81ebb45HTTP 缓存控制:Egg.js 默认使用 egg-static 插件来处理静态文件的请求。你可以在配置文件 config/config.default.js 中设置 static 配置项,包括缓存控制相关的参数,如 maxAge。通过设置适当的缓存策略,浏览器会缓存静态文件,从而提高访问速度。页面级别的缓存控制:你可以通过在控制器中使用 ctx.set() 方法设置响应头来实现页面级别的缓存控制。例如,设置 Cache-Control 头部来指示浏览器缓存页面。CDN 加速:你可以配置 Egg.js 应用程序使用 CDN 加速服务来提高静态文件的传输速度和减轻服务器负载。配置包括将静态文件路径指向 CDN 的地址、添加 CDN 加速域名等。通过将静态文件托管到 CDN,可以使用户从离其更近的 CDN 节点获取文件,加快文件的下载速度。动态内容缓存:Egg.js 提供了通过插件 egg-baymax 实现基于 Redis 的数据缓存,用于缓存动态生成的内容。你可以将经常使用的数据存储在缓存中,减轻数据库的负载,并提高响应速度。需要根据实际需求和插件的配置来进行详细的配置和操作。请参考 Egg.js 官方文档和相关插件的文档,以获取更详细的指南和示例。
点赞 评论 收藏
分享
03-22 20:26
已编辑
华南理工大学 Java
牛客_1164649494:用中心拓展就行了,分别一个字母为中心和两个字母为中心,两种情况求和
查看2道真题和解析 投递美团等公司6个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务