58全站用户行为数据仓库建设及实践

背景

随着58业务体系的不断建设与发展,数据分析与应用需求越来越丰富,给数据仓库的建设工作带来了很大的挑战。

全站行为数据仓库建设过程中,我们总结的问题包括如下几点:

(1) 数据体系架构已经无法支持业务的快速迭代,数据集成的开发、维护成本高;

(2) 数据业务知识散乱,数据分析与应用成本高;

(3) 数据质量定义模糊,缺乏有效统一的数据质量监控体系;

(4) 缺失数据建设规范,数据开发、表结构定义不统一,数据任务、数据表维护成本高。

综上,全站行为数据仓库的建设,需要在现有的大数据平台基础上,借鉴互联网行业通用的维度建模方法论,构建架构合理,分层清晰,具有统一数据规范的全站行为数据仓库。

大数据领域建模综述

1. 为什么需要数据建模

数据仓库是一个面向主题的、集成的、时变的、非易失的数据集合。数据仓库中的数据需要进行有序、有结构地分类组织和存储。通过建立适合业务和基础数据存储环境的模型,可以带来以下优点:

(1) 性能:快速查询数据,减少数据的I/O吞吐;

(2) 成本:减少数据冗余,计算结果复用;

(3) 效率:改善用户的使用数据体验,提高使用数据效率;

(4) 质量:改善数据统计口径的不一致性,减少数据计算错误的可能性。

2. 典型的数据仓库建模方法论

行业内,典型的数据仓库建模方法论主要分为以下几种:

(1) ER模型——全企业的高度设计一个3NF模型,描述企业业务。

a) 高层模型:高度抽象,主要的主题以及主题间的关系

b) 中层模型:细化主题的数据项

c) 物理模型:基于性能和平台特点进行物理属性的设计,如表合并,分区设计

(2) 维度模型——为分析决策需求服务

a) 选择需要进行分析决策的业务过程;

b) 选择粒度;

c) 识别维表;

d) 选择事实。

(3) Data Vault模型——ER模型的衍生,实现数据整合。

a) Hub:企业核心业务实体;

b) Link:Hub之间的关系。Hub的代理键、装载时间、数据来源组成;

c) Satellite:Hub的详细描述内容。

(4) Anchor模型——k-v结构化模型

a) Anchors:类似Hub,只有主键;

b) Attributes:类似Satellite,规范化,全部k-v结构化;

c) Ties:描述Anchors的关系。单独用表来描述;

d) Knots:可能在多个Anchors中公用的属性的提炼。

全站行为数据仓库落地建设实践过程中,参考互联网行业内采用广泛的维度建模方法论,结合58商业自身特点,分析业务环境构造数据仓库底层数据基础,再按照实际的应用需求构造数据仓库上层数据的方式进行数据仓库的建设。

全站行为数据仓库建设实践

下图为数据仓库中全站行为数据部分数据仓库体系架构图:

_

_

_

_

图1 全站行为数据架构图

1. 全站行为数据概述

全站行为数据是指在主站数据内,一次帖子检索过程,对应的用户浏览、点击、交互行为数据集合。其中用户行为是指:

(1) 主站列表页主列表--> 用户浏览;

(2) 主站详情页展现-->用户点击;

(3) 收藏、拨打电话、投递简历-->用户交互|效果。

目前全站行为数据规模明细数据日均2.5T。

2. 全站行为数据仓库构建原则

全站行为数据仓库建设中,逐步借鉴和沉淀的数据仓库构建原则如下:

(1) 底层业务的数据驱动为导向同时结合业务需求驱动。

(2) 便于数据分析。

a) 屏蔽底层复杂业务;

b) 简单、完整、集成的将数据暴露给分析层;

(3) 底层业务变动与上层需求变动对模型冲击最小化。

a) 业务系统变化削弱在操作数据层;

b) 结合自上而下的建设方法削弱需求变动对模型的影响;

c) 数据水平层次清晰化。

(4) 高内聚松耦合。

a) 主题之内数据高内聚;

b) 主题之间数据松耦合。

(5) 构建仓库基础数据层

a) 使得底层业务数据整合工作与上层应用开发工作相隔离,为仓库大规模开发奠定基础;

b) 仓库层次更加清晰,对外暴露数据更加统一。

3. 数据仓库架构分层思想

数据仓库构建过程中,采用的分层思想,各层的功能及建模方式和原则介绍如下。

(1) ODS层

    功能:

a) ODS层是数据仓库准备区;

b) 为DWD层提供基础原始数据;

c) 减少对业务系统影响;

   建模方式及原则:

a) 数据保留时间根据实现业务需求而定;

b) 数据清洗转换,统一数据定义;

c) 按主题逻辑划分;

d) 源系统以增量方式经过ETL到ODS;

e) 可以分表进行周期存储,存储周期不长。

(2)  DWD层

    功能:

a) 为APP层提供来源明细数据;

b) 提供业务系统细节数据的长期沉淀;

c) 为未来分析类需求的扩展提供历史数据支撑;

d) 可以是一些宽表,满足特定查询、数据挖掘应用。

    建模方式及原则

a) 保持粒度一致;

b) 指标事实与ODS基本保持一致。

(3)  APP层

    功能:

a) 对接数据分析需求,提供快速查询、支持。

    建模方式及原则:

a) 面向业务、面向分析;

b) 保持数据量小,快速查询、分析;

c) 维度建模,维度+指标汇总;

d) 支持数据重跑;

e) 不分表存储。

4. 模型实施过程

全站行为数据仓库建设过程,整体数据建设模型实施过程如下:

(1) 充分的业务调研和需求分析,决定后续数据仓库模型构建过程的正确性。

(2) 数据总体架构设计,构建统一、合理、清晰的数据仓库架构。

(3) 详细设计。抽象数据需求,保证数据需求&问题解决的完备性。

(4) 代码开发和测试。

(5) 数据DIFF。

a) 模型迭代-字段DIFF,对迭代过程中,模型中非迭代的每个字段的正确性做迭代前后DIFF,保证字段级数据质量;

b) 模型构建-指标DIFF,对模型构建中,模型中的业务数据指标进行DIFF,保证构建过程符合业务逻辑。

(6) 数据验收。从业务逻辑与模型构建方法过程保证数据模型落地的正确性。

a) 字段填充率;

b) 用户行为串联率;

c) 数据逻辑验证。

(7) 编写Wiki,构建统一的业务、数据知识体系,降低后续数据使用、维护成本。

(8) 数据上线;

a) 数据作业运维;

b) SLA质量保证。数据产出时效性、关键业务逻辑指标验证,保证数据可用性、稳定性。

5. 数据仓库建设规范

全站行为数据建设过程中,从表规范、编码规范来减低模型后续开发、维护成本。

1) 表规范

1、表命名规范如下:

(1) 表命名格式:[层次]_[主题][_表内容]_[分表规则];

(2) 表命名格式:T_[层次]_[主题][_表内容];

(3) 临时表命名格式:[tmp]_所属程序名_[自定义序号1…10]或[temp]_[操作者缩写]_YYYYMMDD_[表内容];

(4) 视图命名格式:View_[表名]_[表内容]。

2、表命名解释如下:

(1) 层次:ODS,DWD,APP;

(2) 表内容

a) 表名、视图名总长度不超过64字符;

b) 尽量详尽说明表具体内容。

(3) 分表规则

a) 日表YYYYMMDD;

b) 月表YYYYMM;

c) 日汇总DS,月汇总MS,日累计DT,月累计MT。

3、字段规范:

(1) 命名规范

a) 必须使用小写字母,并采用下划线分割;

b) 字段名禁止超过 32 个字符;

c) 字段名必须见名知意。命名与业务、产品线等相关联;

d) 字段名禁止使用 HIVE 保留字。

(2) 类型规范

a) 区分使用 TINYINT、SMALLINT、INT、BIGINT 数据类型,;建议使用 TINYINT 代替 BOOLEAN, 提高扩展性和类型转换兼容性;尽量使用低存储数据类型以提高运行效率;

b)  金额字段统一使用DECIMAL,时间字段(精确到十分秒)字段统一使用TIMESTAMP以提升比较效率, 分区字段及日期字段(没有时分秒)使用 String(格式统一为 yyyyMMdd)。

2) 编码规范

1、程序代码:每层一个代码目录,用于存放对应层的模型开发工程。

2、HQL代码:

(1) 使用 left semi join 代替 in/exists;

(2) join 时小表尽量放在左边,如小表足够小可使用 map join,hive 已支持自动判断大小表;

(3) 排序尽量使用 distribute+sort 组合,避免全表 order by;

(4) 尽量使用静态分区,提升运行效率;例行补数建议使用动态分区简化代码;

(5) 慎用笛卡尔积 join,卡历史数据建议使用日期维度表作笛卡尔积,以并行循环操作;

(6) 尽量使用窗口函数、udf 简化 sql 逻辑,提升代码可读性;

(7)  join/group by/distinct 注意处理 NULL 值,尽量避免数据倾斜;

(8) union 会去重, 不用去重时使用 union all;

(9) 表查询如果是分区表, 尽量加上分区限制。

总结和展望

在全站行为数据建设过程中,

(1) 初步构建相对合理的数据体系结构,能够快速支持数据的集成,降低了业务迭代变化对数据模型的冲击;

(2) 业务知识体系初步建立,降低数据使用成本;

(3) 数据质量监控体系初步建立,能够对核心字段和数据指标进行监控,基本覆盖核心数据应用分析场景。

后续将围绕以下几点继续进行数据建设:

(1) 数据完整性:推进曝光数据覆盖范围,持续集成效果数据,提高全站行为数据内容丰富度;

(2) 数据质量:围绕数据产出稳定性与时效性,持续优化已有数据作业。

参考文献

1. 《大数据之路-阿里巴巴大数据实践》

2. 《数据挖掘:概念与技术》

作者简介

路亚州,58同城商业产品技术部工程团队高级大数据开发工程师

_

END

_

猜你喜欢

1、常见的大数据平台架构设计思路

2、5000 字带你快速入门 Apache Kylin

3、Solr vs ElasticSearch,搜索技术哪家强

4、菜鸟供应链实时数仓的架构演进及应用场景

过往记忆大数据微信群,请添加微信:fangzhen0219,备注【进群】

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

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

相关文章

CSDN每日打卡已经2周,进展如何?(送两个CSDN背包)

🍅 作者主页:不吃西红柿 🍅 简介:CSDN博客专家 & 总榜前十🏆、HDZ核心组成员。欢迎点赞、收藏、评论 🍅 粉丝专属福利:知识体系、面试题库、技术互助、简历模板。文末公众号领取 点赞评论 …

哈利路亚

2019独角兽企业重金招聘Python工程师标准>>> 产品规划、产品设计、产品开发、数据分析、数据挖掘、数据开发 转载于:https://my.oschina.net/u/818486/blog/185941

php钓鱼怎么使用方法,路亚钓法操作步骤及抛投技巧

路亚操作的五个基本步骤 虽然按照拟饵的钓法可以横跨淡水钓与海水钓二大系统,而且拟饵的种类达十大类几千种之多,但是,要如何才能玩好拟饵钓法,主要的操竿技巧则有五点,即为:“抽”、“摆”、“旋”、“快”…

AI扮演Linux虚拟机,能管理文件编程开浏览器,还能跟自己「套娃」聊天 | ChatGPT新玩法...

詹士 发自 凹非寺量子位 | 公众号 QbitAI ChatGPT能运行docker了? 还可以自己连接到OpenAI网站,查查自己? 被玩出花的OpenAI聊天AI ChatGPT,又被整出新活了。 如上技能是一位DeepMind研究者Jonas Degrave的最新发现。 刚发出来几小…

chatgpt赋能python:Python作画:如何使用Python创建美丽而独特的艺术作品

Python作画:如何使用Python创建美丽而独特的艺术作品 介绍 Python被认为是一种多用途编程语言,可用于开发各种应用程序,包括软件工具、游戏、Web应用程序、机器学习算法和数据分析。但你也可能没有意识到,Python还可以被用于造美…

Stable Diffusion高阶技能(1)-掌握这些,你也能绘出惊艳画作

开篇 初踏入AI作画的世界,你可能会对如何制造出惊艳的艺术作品而困惑。作为一个前沿技术的探索者,我在这一篇文章中,会和你一同揭秘如何用正确的提示词操控AI的“透视”,将最美的画面展现在你眼前。 技能一、提高图片质量的高阶手法 在数量众多的元素中,我们如何做出最…

【益智游戏】开锁小游戏+ChatGPT写html代码

跟军哥吃饭聊天,说到一些个有意思的思维题目,说是小学五年级的题目,我竟然想了好久,问的GPT才恍然大悟!哈哈,记录下,顺便给小孩讲讲 在网页上玩一玩! 游戏规则: 密码锁有…

Python量化交易实战教程汇总

完整版视频教程 你将收获 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 教给你量化交易的投资思想 编程技术 核心量化策略 交易系统开发 讲师经验分享 成为一个“技术流”理财高手 结合chatgpt提问快速掌握Python量化交易实战 快速提问提高学习效率 适…

Android 微信登录 无法调起授权页面

如果你什么都比对了,有问题,只有一个原因 签名不匹配, 工具地址 微信开放文档 去微信 官方下载签名工具,然后按到手机上,然后在你工程的包名 粘贴一下子,发到手机上,然后用微信那个工具 放包名,获取你的签名,然后去微信官方换一下,然后等一会就好了.\ 如果这个还不行, and…

老杨说运维 | 运维数智化转型正确打开方式是什么?他这样说

2023年5月9日,中国计算机用户协会信息科技审计分会会员大会暨金融科技风险管理与审计论坛成功于北京召开。擎创科技CEO杨辰受邀与会,并分享了在数智运维发展过程中对企业数智化转型建设的规划思考以及相关实践经验。 同时,年会上举行了“金融…

【[ChatGPT] 从 GPT-3.5 到 GPT-5 的进阶历程 |带你全面详细的了解与学习】

目录 一、简介背景介绍OpenAi的前世今生Ai概述GTP的出现 二、chatGPT的进阶之路chatGPT版本的区别A. 模型规模的比较B. 语言理解能力的比较C. 训练数据集的比较D. 应用场景的比较 三、GTP-4到GTP-5的过渡GTP5的发展之路 四、深度学习的愿景GTP-5能否取代程序员?深度…

亚马逊运营知识:ASIN文案编写技巧

ASIN页面是买家了解商品的重要渠道,对转化率的影响很大,它包括了图片、价格、评论、文案等。那么ASIN文案怎么编辑呢?下面海熹跨境人才网给大家分享亚马逊运营人才ASIN文案编写技巧。一起来了解一下吧。 一、确认主要关键词列表 首先,我们需…

文案优化技巧,批量文案改写工具

在当今竞争激烈的市场中,一篇优秀的文案可以吸引更多的潜在客户,提高转化率,带来更多的收益。然而,写出优秀的文案有时是一项具有挑战性的任务。许多人不得不花费大量的时间和精力来编辑和重写它们,这不仅耗时费力&…

亚马逊listing文案这样写,排名更靠前-跨境知道

前文有提到文案撰写的原则以及原则的实战案例。但具体的工作是复杂的,当原则之间发生冲突应当如何平衡呢? 我们再来看个案例。 产品链接:https://www.amazon.com/dp/B09C5RG6KV 产品图片: 图片来源:公众号&#xff…

chatgpt赋能python:Python下包的完整指南:从安装到使用

Python下包的完整指南:从安装到使用 作为一名有10年Python编程经验的工程师,我深刻认识到包管理是Python编程不可或缺的重要部分。本篇文章将为你提供详细的Python下包指南。从本地安装到使用,在这里,你将找到你需要的一切。 什…

chatgpt赋能python:Python中断运行:如何优雅处理运行中的错误?

Python 中断运行:如何优雅处理运行中的错误? Python是一种功能丰富的脚本语言,用于开发全球范围内的多个应用程序。虽然Python是一种面向对象的语言,但即使具有经验的程序员也会遇到中断运行的情况。这可能是由于语法错误&#x…

chatgpt赋能python:Python代码生成:简化工作流程的利器

Python代码生成:简化工作流程的利器 Python是一种高级编程语言,拥有简单易读的语法和广泛的应用,其中之一就是代码生成。在现代软件开发中,自动创建代码是关键步骤,可以显著减少重复性的工作,节省开发时间…

chatgpt赋能python:Python编写接口给别人调用

Python编写接口给别人调用 Python是一种非常流行的编程语言,用于开发各种类型的应用程序。其中,我们可以使用Python编写接口供其他人调用。本文将介绍如何使用Python编写接口,方便他人调用。 什么是接口? 接口指的是在软件系统…

chatgpt赋能python:Python——免费下载安装指南

Python —— 免费下载安装指南 作为一门高效、易学、灵活的编程语言,Python 在各行业和领域都得到了广泛的应用。无论你是初学者,还是有多年开发经验的工程师,Python 都是你必备的工具。因此,在这篇文章中,我们将为大…

chatgpt赋能python:Python在电力行业中的应用介绍

Python在电力行业中的应用介绍 Python作为一种高级编程语言,已经在电力行业中广泛应用。通过Python,电力公司可以更高效的管理和维护他们的设备,同时也能够更好的解决业务问题。下面是Python在电力行业中的一些应用介绍。 数据分析 Python…