数据平台数据管理实践

本文探讨了数据平台中数据的有效管理,包括指标计算、数据清洗、建模、主题划分、逻辑复用、宽表输出及分区和命名。通过一个零售行业的例子,展示了如何计算空调销量指标,提出在数据仓库建设中应考虑的问题和解决策略,旨在提高数据查找和使用效率。
摘要由CSDN通过智能技术生成

我们在前面的文章中讨论了如何将数据接入到数据平台。一般而言,接入到数据平台的数据会来自众多的业务系统,这样一来,我们就拥有了大量不同来源的数据。如何将这些数据有效的管理起来是一个很大的挑战。本文将尝试结合我们的项目实践经验做一些分享。

(数据仓库可以理解为数据平台中所有数据的一个集合,所以,数据平台中的数据管理也可以说是数据仓库中的数据管理。下文中数据平台和数据仓库会经常交替使用,其意义基本一致。)

将数据管理起来是为了高效的查找和使用数据。我们先来看一下通常是如何使用数据的。

一个简单的指标计算

假设现在有一个大型零售行业的场景,我们的主要产品是空调。作为空调生产商,空调的销售主要是通过各大经销店完成的。现在我们想知道空调的销量情况用以辅助决策,我们可以开发一个指标来统计销量。

####开始

如何统计销量呢?看起来只需要把销售的订单找出来,做一个加和统计就可以了。但是实际情况会更复杂一些,从业务上讲,以下场景产生的订单不需要统计:

  • 订单被取消
  • 订单还在进行中
  • 订单产生了退货
  • 内部奖励产生的订单
  • 翻新的产品产生的订单

这个时候我们的销量统计逻辑可以用SQL表达为:

(实际情况可能更复杂,因为order表可能没有是否翻新产品或者是否是内部奖励的信息,此时需要连接其他表进行查询。)

考虑取数时间

上述代码正确吗?我们需要注意,根据每天接入数据平台的数据来看,对于某一个订单,数据仓库里面的数据可能是重复的。比如,订单a在前天创建,同时在昨天被更新,这时,前天和昨天的数据里面都会有这个订单。根据这里的分析,我们需要取当前最新状态的订单来进行计算才行。上述的SQL需要改进为:

####考虑计算历史指标

此时,我们还会希望这个指标可以每天定时计算出来,然后通过大屏进行展示。这个需求就要更复杂一些了。我们常常需要一个任务调度系统来支持,以便可以将上述的代码每天跑一次。其实不仅仅是调度系统,为了支持决策,我们还常常有统计历史指标的需要,比如销量指标在上个月是多少,本月是增长了还是下降了?

这时,代码里面需要加入一个变量,那就是希望计算哪一天的指标。这个参数我们可以命名为data_date。上述代码可以进一步优化为:

考虑计算其他维度

这下看起来好像差不多了。但是,通常来讲,还有更多的来自业务方的需求,比如,希望可以根据经销店的维度来查看这个指标,以便对比分析。希望按照省、市、区维度来查看这个指标,以便对比分析。

此时我们需要考虑指标保存的粒度了。对于经销店粒度的指标而言,因为总的销量与各经销店的销量有汇总关系,所以这里可能没必要保存总销量。当需要总销量时,在展示的时候进行汇总加和即可。

对于省、市、区这几个维度而言,不难看出,它们存在层级关系:区以上是市,市以上是省。其实经销店与这三个地域维度也存在层级关系:经销店以上是区,区以上是市,市以上是省。所以,事实上,我们只需要保存到经销店粒度的统计数据就可以支持省、市、区维度的统计了。

于是我们可以修改代码为:

(实际情况可能更复杂,因为order表往往没有省、市、区的信息,此时需要连接其他表进行查询。)

调度运行

到这里,一个基本的指标计算算是搞定了。实际情况下,由于这个任务需要order等表的数据,需要在数据接入之后才能运行。我们会将这个计算任务和数据接入的任务组成一个数据处理管道(

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值