数据交付变革:研发到产运自助化的转型之路

作者 | Chris

导读

本文讲述为了提升产运侧数据观察、分析、决策的效率,支持业务的快速迭代,移动生态数据研发部对数仓建模与BI工具完成升级,采用宽表建模与TDA平台相结合的方案,一站式自助解决数据应用需求。在此过程中,数据交付模式发生了变革,从研发定制化开发到产运自助化获取开始转变,业务侧数据获取更加方便、快捷、准确。

全文3540字,预计阅读时间9分钟。

01 背景与目标

1.1 背景

大数据时代,基于海量数据分析、挖掘高价值信息,用于指导、驱动业务快速发展,是数据建设的基础能力及价值体现。

数据驱动业务,一方面需要我们构建全面、准确、及时、易用的数据仓库,另一方面也需要建设统一的数据可视化平台,集成adhoc查询、数据分析、数据报表等应用能力,让业务高效、便捷、准确的获取数据,赋能业务增长。

业界内通常采用分层模型构建数仓,从ODS>DWD>DWS>ADS逐层建模,通过定制化的开发ADS层来满足业务侧需求。该模式下,复杂多变的业务场景都需要数据研发进行参与,数据获取时间依赖开发侧排期,定制化的结果不够灵活需要频繁迭代,ADS层占用数据研发的时间占比较高。随着业务发展越来越快,数据需求大量增加,所需的人力成本增加、交付效率降低。因此,需要探索新的数据开发交付模式,完成从研发定制化开发到产运自助化获取的转变。

图片

考虑到数据应用的人群从研发到产运的转变,数据的使用门槛需要进一步降低,对数仓与数据可视化平台的使用体验有更高要求。

1.2 目标

数仓的使用体验表现在直接交互的宽表层,理想的宽表应满足以下几点:

1、全面:覆盖场景足够丰富,业务需求皆可满足

2、准确:逻辑统一收敛,口径简单清晰,业务使用无歧义

3、及时:解决上游时效差异化带来的木桶效应,字段分批产出

4、易用:需求场景通过单张宽表即可获取,避免多表关联

数据平台需要考虑用户差异化的SQL能力、分析习惯、分析方法,在数据可视化、数据计算性能等方面满足用户体验:

1、可视化:拖拽式搭建,算子及样式丰富

2、计算性能:秒级查询耗时

基于上述想法,探索宽表建模替代分层建模,并引入TDA平台,通过数仓模型与数据可视化平台的结合,支持产运自助化获取所需数据。

02 宽表建模

内容生态B端业务场景复杂,来自流量日志、业务数据及集群数据的ODS层表300+张,为了平衡数据时效性及易用性,构建了500+张DWD、DWS及ADS表,存在表血缘关系复杂、中间表冗余、数据口径不一致、SQL复杂度高等问题。
为了解决上述问题,提出宽表建模方案:根据产品功能和业务场景划分主题,明确主题最细粒度及所有的业务过程,基于ODS表直接构建宽表层,宽表覆盖业务所需全部字段,支持即席分析、报表查询等所有数据应用场景。

图片

△数仓建模演进思路

2.1 技术方案

由于宽表本身上游数据源多、数据量大,当多个上游数据就绪时间不尽相同时,宽表的产出时效会出现木桶效应。此外为了尽可能覆盖全部业务需求,封装了大量的处理逻辑及关联计算,代码更加复杂,维护成本与回溯成本非常高。为了解决上述问题,探索并实现了宽表建模多版本方案。根据数据的时效差异,将宽表拆分为多个计算任务,每个任务产出宽表的部分字段,并根据配置进行数据合并,最终产出完整的宽表。

同一版本受上游数据源影响在不同日期的产出时效不可控,为了提升宽表整体的时效,需要各版本数据产出后尽快合并至宽表,且合并后,需要为下游提供依赖检查机制,感知该版本字段已产出。

2.1.1 多版本合并

为了保障各版本数据产出后尽快合并至宽表,且避免同分区有两个合并任务同时运行,造成数据错乱问题,引入了分布式锁服务,通过抢占锁是否成功来决定是否需要合并。整体流程图如下:

图片

△多版本合并流程

加锁的维度是表名和日期分区,是否加锁成功基于锁状态、任务状态及过期时间进行判定:

1、锁未占用,说明当前无其他合并任务,该任务加锁成功

2、锁占用,任务状态异常,说明当前合并任务失败,该任务强制解锁并加锁成功

3、锁占用,任务状态Accept,且锁占用时间超过过期时间,Kill正在运行的任务后,该任务强制解锁并加锁成功

在多版本合并方案中,为了提升宽表合并任务的通用性,抽取了公共的合并逻辑,基于配置文件,将分版本数据产出后的文件合并至宽表中。配置文件涵盖多组文件地址、关联条件、关联类型及字段信息。每一个文件地址由独立任务生成,负责该数据源相关逻辑下沉,数据口径的变更只需更改对应的任务,维护成本较低。

2.1.2 下游依赖

多版本宽表中的字段基于时效差异分版本产出,因此需要提供依赖检查机制,使下游能及时使用就绪字段,满足高时效的数据应用场景。方案中提供了三种不同的依赖检查方式:

1、任务组依赖:通过调度平台的任务名进行依赖检查,支持厂内的pingo,tds调度平台

2、AFS文件依赖:某一版本合并到宽表后,会产出该版本任务成功的AFS标识文件,可同于下游进行依赖检查

3、字段产出探测服务:对于数据应用平台(如:一脉、TDA等),平台无法通过任务组及AFS文件依赖识别查询的字段是否产出。针对这些场景,提供字段探测服务,在某一版本合并到宽表后,会更新探测服务中该版本相关字段的产出标识,数据应用平台通过API接口调用判定本次查询的字段在查询时间范围内是否就绪,保障数据的可用性

图片

△字段探测服务

2.2 宽表优点

  • 成本方面:经典分层数仓层与层之间冗余严重,采用宽表建模后避免了构建繁多的DWD、DWS层表,一个主题仅有一到两个宽表,数仓中表的数量减少60%,存储下降30%。此外,表的精简带来数据任务的减少,数据查询也由多个DWD、DWS表的关联优化至一张宽表,避免了大量的shuffle运算,即席查询耗时由分钟级缩短至秒级,计算资源节省20%。

  • 质量方面:宽表的字段非常丰富,达到上千个,尽可能覆盖主题所有的业务场景,因此应用层的数据完全可以收敛至宽表层,消除了分层数仓中因表的冗余及逻辑下沉不彻底造成的口径不一致问题,与产品侧基于宽表层管理指标口径,沟通更流畅,数据准确性更高。

  • 效率方面:宽表模型易用性非常好,复杂需求通过单张宽表即可满足,具备基础的SQL能力即可获取所有数据,业务使用体验非常好。

03 可视化平台

常见的数据需求分为三类:临时提数、报表开发、数据分析。对于临时提数场景,宽表模型对业务覆盖的全面性及数据获取的易用性,可以支持产运侧通过简单的SQL拼写获取数据;对于报表开发场景,仍需要数据研发构建ADS层应用表,并同步至OLAP存储,利用Sugar等报表平台进行配置;对于数据分析场景,产运侧可基于宽表获取分析数据,但需要保存灵活多变的分析结果,并进行可视化展示,体验较差。

宽表模型极大简化了数据查询的复杂度,为自助化获取数据提供了基础能力,报表及数据分析所要求的数据可视化能力成为了产运自助化获取数据的阻力。对此,引入TDA数据可视化平台,支持数据分析及仪表盘拖拽式搭建,数据处理和分析能力丰富,一站式解决数据应用需求。

图片

△自助化思路

该模式下,数据研发负责主题宽表的建设、同步及查询性能的优化,数据产品同学负责数据集的配置,运营同学基于数据集进行可视化分析及仪表盘配置,实现数据应用的自助化。

宽表建设:按照宽表建模思想构建主题宽表。

数据同步:数据从HDFS至ClickHouse同步,数仓宽表每个版本产出后启动同步任务,并将distinct查询场景的key在数据同步阶段进行shuffle。

性能优化:为了优化查询耗时,引入了缓存及自动上卷两个机制。缓存包含两种情况:用户首次查询,将查询结果进行缓存;基于用户查询历史记录,通过离线任务方式轮询来模拟用户查询,并将查询结果更新缓存。自动上卷则基于用户历史查询记录的特征,针对高频的维度进行projection聚合。目前,针对千万级数据查询场景,查询耗时秒级。

图片

△缓存+自动上卷机制

04 总结

通过数仓宽表模型与数据可视化平台的结合,完成了数据需求从研发定制化开发到产运自助化获取的转变,数据分析的灵活性和效率大幅提升,降低了人力成本。

1、研发承接的需求量下降57%,其中数据应用需求占比由60%降低至10%。

图片

△需求数量

图片

2、可视化分析场景每日PV 4000+,整体数据需求自助化率达到92%。

3、单次查询耗时从分钟级缩短至秒级。

4、报表开发周期由天级缩短至小时级。

——END——

推荐阅读

百度搜索exgraph图执行引擎设计与实践

百度搜索&金融:构建高时效、高可用的分布式数据传输系统

“踩坑”经验分享:Swift语言落地实践

移动端防截屏录屏技术在百度账户系统实践

AI Native工程化:百度App AI互动技术实践

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/615977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

黑帽SEO简介

什么是黑帽 SEO? 黑帽SEO是一种违反搜索引擎指南的做法,用于使网站在搜索结果中排名更高。这些不道德的策略并不能解决搜索者的问题,并且通常以搜索引擎的惩罚而告终。黑帽技术包括关键字填充、伪装和使用专用链接网络。 出现在搜索结果中对…

vue2-手写轮播图

轮播图5长展示&#xff0c;点击指示器向右移动一个图片&#xff0c;每隔2秒移动一张照片&#xff01; <template><div class"top-app"><div class"carousel-container"><div class"carousel" ref"carousel">&…

Graphpad Prism10.1.2(324) 安装教程 (含Win/Mac版)

GraphPad Prism GraphPad Prism是一款非常专业强大的科研医学生物数据处理绘图软件&#xff0c;它可以将科学图形、综合曲线拟合&#xff08;非线性回归&#xff09;、可理解的统计数据、数据组织结合在一起&#xff0c;除了最基本的数据统计分析外&#xff0c;还能自动生成统…

最新AI绘画Midjourney绘画提示词Prompt大全

一、Midjourney绘画工具 SparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统&#xff0c;支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭…

【sklearn练习】模型评估

一、交叉验证 cross_val_score 的使用 1、不用交叉验证的情况&#xff1a; from __future__ import print_function from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifieriris…

ubuntu系统(9):ubuntu 20.02安装pydot

目录 警告信息 1、确保安装了Python和pip 2、安装Graphviz软件包 3、pip安装pydot 验证 在gem5中&#xff0c;pydot库用于生成图形化输出&#xff0c;特别是生成.dot文件和相关的图像文件&#xff0c;如PDF、PNG等。它与gem5结合使用的一个常见用途是生成系统结构图、内存…

基础篇_面向对象(什么是对象,对象演化,继承,多态,封装,接口,Service,核心类库,异常处理)

文章目录 一. 什么是对象1. 抽取属性2. 字段默认值3. this4. 无参构造5. 抽取行为 二. 对象演化1. 对象字段演化2. 对象方法演化3. 贷款计算器 - 对象改造4. 静态变量5. 四种变量 三. 继承1. 继承语法2. 贷款计算器 - 继承改造3. java 类型系统4. 类型转换1) 基本类型转换2) 包…

【算法分析与设计】最大子数组和

题目 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 示例 示例 1&#xff1a; 输入&#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出&a…

硬核加码!星邦蓝助力全球运力最大固体火箭“引力一号”海上首飞

继助力我国最大固体运载火箭“力箭一号”首飞后&#xff0c;星邦蓝再次有幸参与和见证了全球运力最大的固体火箭“引力一号”首次成功发射。 今日&#xff0c;全球运力最大的固体火箭“引力一号”从山东海阳附近海域完成首次发射&#xff0c;刷新世界最大固体运载火箭纪录&…

关于鸿蒙的ArkUI的自我理解

先不说好不好上手 一些软件必要的基础概念了解 ①瓦片地图 --无或未找到 ②视频播放功能 --未找到能播放直播流&#xff08;找到个 ohos/ijkplayer不知如何&#xff09; ③支付功能 微信无 支付宝的是java代码写得&#xff0c;AskUI中如何调用 ④推送 --自己应该有吧 ⑤长…

【一周安全资讯0106】国家标准《信息安全技术 网络安全信息报送指南》正式发布;全球1100万SSH服务器面临“水龟攻击”威胁

要闻速览 1、国家标准GB/T 43557-2023《信息安全技术 网络安全信息报送指南》发布 2、《未成年人网络保护条例》元旦起施行 织密未成年人网络保护立体“安全网” 3、深圳证监局&#xff1a;证券期货经营机构应建立健全网络安全应急处置机制 4、黑客大规模恶意注册与ChatGPT相似…

全面解析微服务

导读 微服务是企业应用及数据变革升级的利器&#xff0c;也是数字化转型及运营不可或缺的助产工具&#xff0c;企业云原生更离不开微服务&#xff0c;同时云原生的既要最大化发挥微服务的价值&#xff0c;也要最大化弥补微服务的缺陷。本文梳理了微服务基础设施组件、服务网格、…

C++重新认知:拷贝构造函数

一、什么是拷贝构造函数 对于简单变量来说&#xff0c;可以轻松完成拷贝。 int a 10; int b a;但是对于复杂的类对象来说&#xff0c;不仅存在变量成员&#xff0c;也存在各种函数等。因此相同类型的类对象是通过拷贝构造函数来完成复制过程的。 #include<iostream>…

基于 TensorFlow.js 构建垃圾评论检测系统

基于 TensorFlow.js 构建垃圾评论检测系统。 准备工作 在过去的十年中,Web 应用变得越来越具有社交性和互动性,而即使是在中等热门的网站上,也有数万人可能实时对多媒体、评论等的支持。这也让垃圾内容发布者有机会滥用此类系统,将不太令人满意的内容与其他人撰写的文章、视…

小程序必看系列!什么是抖音小程序?抖音小程序怎么制作?

随着移动互联网的飞速发展&#xff0c;抖音已经成为了一个广受欢迎的短视频平台。在这个平台上&#xff0c;用户可以分享自己的生活点滴、表达自己的观点&#xff0c;甚至还能通过小程序来丰富自己的社交体验。那么&#xff0c;如何制作抖音小程序呢&#xff1f; 一、抖音小程…

5288 SDH/PDH数字传输分析仪

5288 SDH/PDH数字传输分析仪 数字通信测量仪器 5288 SDH/PDH数字传输分析仪为高性能手持式数字传输分析仪&#xff0c;符合ITU-T SDH/PDH技术规范和我国光同步传输网技术体制的规定,支持2.048、34.368、139.264Mb/s及155.520Mb/s传输速率的测试。可进行SDH/PDH传输设备和网络的…

云畅科技技术中心被认定为湖南省省级企业技术中心

近日&#xff0c;湖南省工业和信息化厅公布《2023年第二批湖南省省级企业技术中心(第29批)》&#xff0c;云畅科技技术中心作为研发设计型代表入选。 省级企业技术中心是强化企业技术创新主体地位&#xff0c;增强企业自主创新能力&#xff0c;推动工业企业高质量发展的一个重要…

SQL-分组查询

&#x1f389;欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克&#x1f379; ✨博客主页&#xff1a;小小恶斯法克的博客 &#x1f388;该系列文章专栏&#xff1a;重拾MySQL &#x1f379;文章作者技术和水平很有限&#xff0c;如果文中出现错误&am…

turnjs实现翻书效果

需求&#xff1a;要做一个效果&#xff0c;类似于阅读器上的翻书效果。 咱们要实现这个需求就需要使用turnjs这个插件&#xff0c;他的官网是turnjs官网。 进入官网后可以点击 这个按钮去下载官网的demo。 这个插件依赖于jQuery&#xff0c;所以你的先安装jQuery. npm insta…

Unity URP下阴影锯齿

1.概述 在Unity开发的URP项目中出现阴影有明显锯齿。如下图所示&#xff1a; 并且在主光源的Shadow Type已经是Soft Shadows模式了。 2.URP Asset 阴影出现锯齿说明阴影质量不高&#xff0c;所以要先找到URP Asset文件进行阴影质量参数的设置。 1.打开PlayerSetting找到Graph…