数仓搭建的思路扩充

数仓 重点在于建模,也就是理清思路,知道要怎么做,还要很具体的知道每个表用来干什么,每个表需要哪些字段。

数仓分层 可以使用不同的库来区分。多个数据层用多个数据库来存放不同层的数据。

即席查询 使用不同的表名区分主题。统一放在ads层就可以。然后将每个部门需要的数据,推送到相应部门自己的数据库中,数据量不大就推全量,数据量大就推增量。
假设财务部门的即席查询,那就建立一个财务的库,专门用来接收财务的相关数据,按照财务部门提出的需求,将计算结果的结果表放到财务的库中,从而达到即席查询的目的。如果需要在现有业务需求的基础上进行二次开发,可以根据开发需求将需要数据推过去。
另外,即席查询可以以使用Impala和hue来开展。相关内容到时候百度。

数据的etl 可以使用kettle这种专门的etl工具,我个人比较倾向于使用spark进行etl,但是逻辑复杂的etl还是使用kettle会好一些。

按模型建表 可以使用shell脚本建表,也会有一些建模建表工具。完成自动建表的过程。

数据保持一致性 使用主键关联,或者外键关联,使得这张表的数据在改变的时候,另一张相关表的数据能够一致更改。

使用oracle作为数仓底层存储手段的时候,可能要写一些存储过程,具体函数要按照需求开发。

(拿到的数据存在ods库里面,仓库里存的数据放到bas库里面,需要推送出去的数据放到stat或者其他库里面,就是数据仓库的采集,清洗和推送)
解释这句话,数据采集来,放在ods库,是为原始数据。清洗好的数据存到bas库,是为经过数据治理的数据。计算后的结果数据,放在stat或者其他库里面,是为即席查询的前期数据准备。然后再用定时任务,把各单位需要的数据推送到各单位的库里面,完成即席查询的准备。

按照建模完成的表,也就是经过数据治理的数据,全部放到bas库,不同的主题按照不同的表名开头区分。

在这里插入图片描述
借用上面这张图的架构总结一下:
拿到的增量数据进入预处理层,也就是经过格式转换进来的所有数据,需要拿到的数据都是每天的增量数据,也就是说,在这一层,将要面临清洗的数据都是每天的增量,原始数据不需要保存全量。如果有需要,保存定量时间的数据就可以,比如说一个月,三个月,一年。
在预处理层的数据表结构和ods层的表结构保持一致即可。

经过简单的数据治理,排除掉大量的垃圾数据后,剩余数据进入ods层,即为操作数据层(个人认为可以叫原始数据层)。

总结预处理层和操作数据层:
1.每天增量进入数据预处理层,然后定时抽取增量数据进入ods层,在ods层做数据全量,并且在ods层完成初步数据治理工作,比如filter无用数据。
2.每天数据进入数据预处理层,然后定时抽取增量数据,并在数据预处理层完成初步数据治理工作,然后将经过预处理的数据放入ods层,在ods层做单方面的原始数据汇总。
(这两层的关系只是个人思索,没有经过具体指正)

Data Warehouse Detail(DWD)数据仓库明细层和 Data Warehouse Summary(DWS)
数据仓库汇总层,是业务层与数据仓库的隔离层,是最接近数据源中数据的一层,数据源中的数据进过ETL后装入本层。这一层主要解决一些数据质量问题和数据的完整度问题。DW层的表通常包括两类,一个用于存储当前需要加载的数据,一个用于存储处理完后的历史数据。

dwd层,采用维度退化的方法,将维度退化到事实表,减少事实表和维度表的关联,提高明细表的易用性。
这里要明确的是:
1.采用了一个方法,这个方法将数据的维度退化到事实表
2.建立了一个明细表
(使用退化维度的方法将维度属性写入到事实表中。)

dws层,数据汇总层
就是主题宽表
不一定就是只一张表
dws就是 数据较高程度的聚合,不同类型的内容要聚合到一起,冗余
这样查某个主题的指标,只需要去这几个宽表查就好了!

宽表
意思是 把很多的 维度、指标都合到一个表里,需要冗余,为了后续数据统计方便
宽表由于把不同的内容都放在同一张表存储,宽表已经不符合三范式的模型设计规范,随之带来的主要坏处就是数据的大量冗余,与之相对应的好处就是查询性能的提高与便捷。

总结ods和DW:
基础概念:(抓住重点:DW是反映历史变化,ODS是反映当前变化)
数据仓库(Data Warehouse):是一个面向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。

时效:T+1

操作数据存储(ODS):是一个面向主题的、集成的、可变的、当前的细节数据集合,用于支持企业对于即时性的、操作性的、集成的全体信息的需求。

ODS是数据仓库体系结构中的一个可选部分,是DB与DW之间的中间层,ODS具备数据仓库的部分特征和OLTP系统的部分特征。

时效:实时

最后的ads层,数据应用层,在这一层根据业务部门的需求,将数据按照需求进行计算,然后将计算结果推到相应的部门数据库,做到即席查询的需求。

dim,也就是维度层。根据各层的数据建立维度表。

数栈-数据开发规范
浅析数据库(DB)、操作数据存储(ODS)和数据仓库(DW)的区别与联系

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Bootstrap是一种统计学方法,用于通过从原始数据集中进行有放回抽样来估计统计量的分布。它可以用于估计参数的置信区间、计算假设检验的p值以及生成预测模型的不确定性估计。 在机器学习中,Bootstrap可以用于小样本扩充问题。通过从原始数据集中进行有放回抽样,可以生成多个新的数据集,每个数据集都与原始数据集具有相同的大小。这些新的数据集可以用于增加训练样本的数量,从而改善模型的性能和泛化能力。 然而,需要注意的是,Bootstrap扩充并不总是适用于所有机器学习问题。它的有效性取决于数据集的特性和具体的机器学习算法。在某些情况下,Bootstrap扩充可能会导致过拟合或不准确的结果。因此,在使用Bootstrap扩充之前,需要仔细评估其适用性并进行实验验证。 以下是一个使用Bootstrap扩充的示例代码: ```python import numpy as np # 原始数据集 data = np.array([1, 2, 3, 4, 5]) # 生成新的数据集 bootstrap_samples = [] for _ in range(100): bootstrap_sample = np.random.choice(data, size=len(data), replace=True) bootstrap_samples.append(bootstrap_sample) # 打印新的数据集 for bootstrap_sample in bootstrap_samples: print(bootstrap_sample) ``` 这段代码将原始数据集进行100次有放回抽样,生成100个新的数据集。每个新的数据集都与原始数据集具有相同的大小,并且可以用于扩充小样本数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值