阿里妹导读
本文作者分享了一些对数据建模的理解,并以社区业务为例展开讨论。
作为一名练习时间1年的数据研发练习生,这一年里我在业务需求中摸爬滚打,系统地学习了数据建模。在这里我想分享一些我对数据建模的理解,并以我支持的社区业务为例展开讨论,如果有任何不足之处,欢迎大家交流指正。
什么是数据
数据是什么:让我们来看一下官方定义,数据是对客观事物的数量、属性、位置及其相互关系的抽象表示,是对信息的记录。这个解释比较抽象,其实我理解,凡是可以被记录的,都是数据。
数据从哪里来,到哪里去:数据不是天然存在的,而是被生产出来的,从原始数据生产-> 数据采集-> 数据加工-> 数据分析挖掘,进而形成知识,再循环到指导原始数据生产,这里有两个关键要素:
数据生产:对该对象的数字化记录、描述和呈现,即数据化的过程;
DIKW框架:数据(data) -> 信息(information) -> 知识(knowledge) -> 智慧(wisdom)
数据是未加工的原材料,简单的事实记录。经过加工处理后,就形成了信息,能够回答一些简单问题。对信息再进行总结归纳,将其体系化,信息之间产生了联系,就形成了知识。而智慧则是在理论知识的基础上,加上自身实践,得出的人生经验或对世界的看法,具有较强的主观色彩。
什么是数据建模
数据建模即构建数据模型,数据模型=数据组件+关系+规约。
为什么要数据建模呢?本质是为了有序有结构地分类存储和组织数据,我们可以从规范,效率,成本三个角度考虑:
成本:存储成本/计算成本消耗合理,计算性能优;
数据建模总体流程
概念建模设计
数据建模的第一阶段是概念建模设计,将业务领域知识转化为图形化表达。这样可以指导后续的逻辑建模,并方便数据消费者查找和使用数据。概念建模的第一步是需求调研,包括业务调研和需求分析两方面:
需求分析:自顶向下,收集分析师和运营人员对数据或报表的需求;
下一步是进行数据域划分,这意味着要根据面向业务的分析,将业务过程或维度进行抽象,然后划分出单独的模块。最后构建总线矩阵,明确业务过程所属的数据模块,并确定业务过程与维度之间的关系。
逻辑建模设计
接下来我们进入到逻辑建模设计,第一步要做的是明确并规范定义指标与维度。首先,我们需要明确各个维度及其对应的属性,然后需要明确原子指标和派生指标。原子指标是针对特定业务过程的度量,不可再细分,具有明确的业务含义;派生指标是对原子指标在特定业务统计范围下的限定,下面我们将正式进入明细层模型设计。
维度是维度建模的基础和灵魂,如何构建一致性维表,维度表设计过程如下:
第四步:冗余维度;
设计TIPS
维度表必须要有唯一主键标识,可通过配置DQC强规则保证主键唯一性;(ps:记得很久以前弱弱问了老板一句,维表一定要有主键么?被老板白了一眼,从此铭记于心!)
从维表存放变化较快、产出时间晚、热度低的属性;
dt记历史:存储计算成本高、运维成本低、使用成本低;
按天调度,省略后缀dd;按小时调度,添加后缀hd;
明细事实表分为事务事实表、周期快照事实表和累计快照事实表,具体分类如下:
明细事实表设计过程如下:
第五步:冗余维度;
设计TIPS
{project_name}.dwd_{业务关键字}_[_{数据单元}]_{单或多业务过程缩写}[_{自定义标签缩写}]_{刷新周期标识}{单分区增量全量标识}
汇总事实表的设计过程如下:
第四步:冗余维度属性
DWS轻度汇总层面向业务需求设计,首先考虑的是复用性。需要特别关注某些维度的聚集是否经常用于数据分析,并在设计时尽量覆盖常用的分析场景。这样做的好处是,一方面可以为上游提供统一、准确、一致的数据,另一方面,上层指标加工时无需多次计算,可以节省资源。
设计TIPS
避免维度属性一起聚合,数据汇总完成后关联维度获取最新维度属性;
避免所有统计周期/CUBE一起计算,考虑计算复用,如nd依赖1d、粗粒度依赖细粒度;
使用最新的快照数据,则在回刷数据时,数据无法和最初保持一致;
统计时间周期:统一用[ds日统计]、[ws周统计]、[ms月统计]表示,如果能明确界定1d/nd/td,后缀也可写成1d/nd/td;
物理建模设计
逻辑模型设计好后,我们可以开始正式进入代码开发和运维阶段(即正式开始干活):
代码开发:数据业务逻辑处理+SQL SCAN代码规则校验+数据测试(对比、分布)
部署运维:生成ETL任务+运行状态监控+DQC配置
数据模型验证与保障
社区数据服务
写在前面
我7月初接手了社区业务,这里从我的视角讲述如何针对一块业务进行数据建模以及提供对应的数据服务。对于数据同学来说,我们能做的包括帮助业务看清现状,定位业务问题,以及数据驱动发现产品优化方向与运营策略并定量效果。首先第一步,我们要充分了解业务背景,即市场机会如何,市场现状如何,在我司的定位是什么?以兴趣社区为例,相较于传统的社交方式,目前市场上的趋势是人们更倾向于寻找共同兴趣爱好和认知的伙伴,而针对小众兴趣领域,用户对非标准化商品的交易需求也在增加,比如户外活动和livehouse门票。目前主流的平台只有粗门和闪动,剩下大部分是微信私域在承接(私聊、朋友圈、微信群、小程序等),抖音和小红书等也还在起步阶段。我们的兴趣社区产品是以兴趣为基础,社区为形态,具有分发长尾内容和非标准化商品能力的本地化社区产品。行业内社区的商业模式如下图所示:
兴趣社区整体的数据服务框架如下图所示:
数据建模过程
接下来讲述社区数据建设流程,这里只列出了一些关键流程,具体细节在此不展开叙述。
数据分析思路
派生指标
维表设计
使用 ChatGLM 搭建对话模型
通过ChatGLM和LangChain构建高效的对话模型。基于自然语言处理技术,并使用语言交换协议提升语义理解和交互体验。可广泛应用于聊天机器人、智能客服、社交媒体等场景中,有效解决对话模型中的语义理解和交互问题,提高用户交互的自然性和流畅度。
点击阅读原文查看详情。