数仓理论知识之数仓命名规范

数据分层

数据运营层:ODS(Operational Data Store)

ODS层,最接近源数据层,为了考虑后续数据追溯,这一层不建议做过多的数据清洗工作,最好原封不动的接入原始数据。

数据仓库层:DW(Data Warehouse)

数据仓库层是我们在做数据仓库时要核心设计的一层,在这里,要从ODS层提取数据建立各种数据模型,DW层又细分为DWD层,DWM层和DWS层。

  • DWD(Data Warehouse Detail)
    DWD层要做的是将数据清理、整合、规范化、脏数据、垃圾数据、规范不一致的、状态定义不一致的、命名不规范的数据整合成统一规格(粒度)。

同时为了提高数据的易用性,要采用一些维度退化操作,将一些维度退化到事实内,减少事实表与维度表的关联。

另外,也要做一些数据聚合,将相同数据的表汇聚在一张表,提高数据可用性。

  • DWM(Data Warehouse Middle)
    DWM会在DWD层的基础上,对数据做轻度的聚合操作,生成一系列中间表,提升公共指标的复用性,减少重复加工。

如果直接从DWD层直接把数据拉取到DWS层的话会因为计算力太大或维度太少造成资源消耗过大。

所以一般的解决方案是先从DWD层计算几个DWM表,然后直接拼接成DWS层,DWM层可以直接用完即删。

  • DWS(Data Warehouse Servce)
    DWS层为公共汇总层,会进行轻度汇总,粒度比明细数据稍粗,DWS层会整合汇总成分析某一个主题域的服务数据,一般是宽表。DWS层至少覆盖80%的应用场景,又称DM层。

按照业务划分,如主题域–流量、订单、用户等,生成字段比较多的宽表,用于后续查询。

数据应用层:APP(Application)

APP层主要用于提供数据产品和数据分析使用的数据,一般存放在ES、PostgreSQL、Redis等系统中供线上系统使用,也可以使用OLAP引擎供数据分析与数据挖掘使用,报表数据就来源于这里。

维度层DIM(Dimension)

维度层包含两个部分:
高基数维度数据:一般是用户资料表、商品资料表类似的资料表,数据量可以上千万上亿。
低基数维度数据:一般是配置表,比如枚举值对应的中文含义,或者日期维度表,数据量大概在几千几万。

在这里插入图片描述

表规范

在这里插入图片描述
首先判断这个表的用途,是业务数据/日志接入数据、中间表还是业务输出数据,如果是中间表,那么判断该表是否需要分组操作,如果不需要就导入DWD层,需要的话就需要判断表是否是多个行为表的汇总表(宽表)。最后加上事业群、部门、业务线、自定义名称和更新频率等信息即可。

命名规范:

范围符号
维度层dim
数据集市层dm
贴源数据层ods
数据明细层dwd
数据汇聚层dws
日快照d
增量i
w
拉链表l
非分区全量表a
常规表

常规表是我们需要固化的表, 是正式使用的表,也就是需要投入精力去维护的表。

命名规范:分层前缀[dwd|dws|ods]_部门_业务域_主题域_XXX_更新周期|数据范围

业务域与主题域可以用词根的方式枚举清除,不断完善。

更新周期主要是时间粒度、日、月、年、周等。

中间表

中间表一般存在于作业中,中间表的作用域只在当前Job执行过程中,Job一旦执行完毕,该表可以释放(一般情况下会保留几天来回溯)。

命名规范:mid_table_name_[0~9|dim]

以mid开头,接表名,最后以特定的词语或数字编号结尾,如果遇到需要补全维度的表,就以dim结尾。如果需要保留历史记录,name就要加上时间戳。

临时表

临时表就是临时测试或查看数据用的表,可以随时删除。

命名规范:tmp_xxx

以tmp开头即可。

维度表

维度表可以从ods层抽取出来,也可以手工维护。

命名规范:dim_xxx

以dim开头,表名与内容有关即可。

手工表(明细表)

手工表是整个仓库的核心,一般都是一次初始化,然后就不会自由变动了,发生变动也是手动维护。

命名规范:dwd_业务域_manual_xxx

dwd表示明细层,后接业务域,manual表示手工维护表,后接表名

数据处理方式

增量表

增量数据是上次导出后的新数据。

  • 记录每次增加的量,而不是总量
  • 只汇报变化量,无变化不汇报
  • 每天一个分区
    在这里插入图片描述
全量表

所有的数据。

  • 全量表,有无变化都要报。
  • 每次上报的数据都是所有的数据
  • 只有一个分区
    在这里插入图片描述
快照表

按日分区,记录截止数据日期的全量数据。

  • 快照表,有无变化,都要报
  • 每次上报的数据都是所有的数据
  • 一天一个分区
    在这里插入图片描述
拉链表

记录截止日期的全量数据

  • 记录一个事物从开始,一直到当前状态的所有变化的信息
  • 拉链表每次上报的都是历史记录的最终状态,是记录在当前时刻的历史总 量
  • 当前记录存的是当前时间之前的所有历史记录的最后变化量(总量)
  • 只有一个分区
    在这里插入图片描述
  • 4
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 数仓字段命名中的1d和7d代表的是时间粒度或时间段。在数据仓库中,时间是一个重要的维度,用来帮助组织和分析数据。1d表示以一天为单位的时间粒度,用于表示某个指标或指标集合在每天的数值。例如,销售额1d可以表示每天的销售额总和。7d表示以一周为单位的时间粒度,用于表示某指标或指标集合在每周的数值。例如,用户新增数量7d可以表示每周的用户新增总和。 通过使用不同的时间粒度,我们可以更好地理解数据的趋势和变化情况。1d和7d的命名方式可以简洁地表示时间粒度,方便人们阅读和理解数据。同时,这样的命名方式也可以帮助开发人员在数仓设计中使用正确的时间维度和聚合算法,确保数据的准确性和一致性。 除了1d和7d之外,还可以使用其他时间粒度,如1h(一小时)、1w(一周)或1m(一月)。选择合适的时间粒度要根据数据的特点和需求来决定,以便更好地满足业务分析和决策的需要。 总之,数仓字段命名中的1d和7d用来表示时间粒度,帮助我们更好地理解和分析数据,在数据仓库的设计和开发中起到重要的作用。 ### 回答2: 数仓字段命名中的1d和7d代表的是时间周期,分别表示一天和七天。 在数仓中,时间是一个重要的维度,用来进行数据分析和建模。为了能够更好地对各类指标进行统计和分析,通常会将时间周期划分为不同的粒度。1d表示时间粒度为一天,即每天的数据整理为一个时间点;而7d表示时间粒度为七天,即每七天的数据整理为一个时间点。 对于数仓中的字段命名,一般会采用一定的规范,以方便后续的数据处理和分析。字段名称一般要具备一定的描述性,能够在一定程度上反映字段的含义和作用。因此,在命名中使用1d和7d可以让人很快地理解该字段是表示每天或每七天的数据汇总。 举个例子,假设有一个数仓表格中有一个字段名为"销售量_1d",这个字段表示每天的销售量数据。而另一个字段名为"用户活跃度_7d",这个字段表示统计每七天内的用户活跃度数据。 总之,1d和7d在数仓字段命名中是常见的时间周期表示法,用于标识每天或每七天的数据汇总,在字段命名中起到了描述性和方便理解的作用。 ### 回答3: "数仓字段命名中的1d和7d" 是指在数据仓库数仓)中用来表示时间周期的两个常见命名方式。 1d代表一天的时间周期,1表示1个单位,d表示天。这个命名方式用来表示以一天为单位的数据统计和分析。例如,可以使用“1d”命名来表示每天的销售额、收入、点击量等数据。 7d代表七天的时间周期,7表示7个单位,d仍然表示天。这个命名方式用来表示以七天(一周)为单位的数据统计和分析。例如,可以使用“7d”命名来表示每周的用户活跃度、产品注册量等数据。 使用这样的命名方式可以使数据仓库中的字段更具有描述性和可读性,方便用户在查询和使用数据时理解其含义和时间周期。同时,这样的命名方式也便于进行时间关联分析和对比分析,因为不同周期的数据可以直接进行比较。 当然,在具体的数据仓库设计中,也可以根据实际需求和业务场景进行命名方式的调整和灵活运用。以上只是其中的两个常见例子,在实际应用中还可以有其他命名方式,比如1h表示一小时、30d表示30天等等,根据实际需要进行选择和命名。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寒 暄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值