将非规范化数据加载到数据仓库中

Posted

技术标签:

【中文标题】将非规范化数据加载到数据仓库中【英文标题】:Loading Denormalized Data into a Datawarehouse 【发布时间】:2015-08-07 15:51:37 【问题描述】:

我们正在通过使用来自不同来源的文件提要来构建数据仓库。 文件提要都是非规范化/扁平化(在交易(事实)文件中,帐户属性在所有记录中不断重复)。

此外,帐户信息经常更改(Feed 提供数据的原样版本)。

在这种情况下,最佳做法是什么。数据仓库是否应该具有星型模式模型(将 Account 信息作为渐变维度和 Transaction 事实)。重新规范化会使 ETL 过程变得复杂吗?

【问题讨论】:

【参考方案1】:

在我的公司中,每当某些输入被非规范化时,我们都会对其进行规范化,然后从那里继续加载我们的架构(无论您的架构是什么)。

原因是,这些输入被去规范化后,很难检查不一致(数据质量)。除此之外,使您的所有输入符合某个标准可以让您的代码更易于维护。

在我们的案例中,遵循 Kimball 实践取得了完全的成功、事实表、缓慢变化的维度以及所有这些爵士乐。

【讨论】:

【参考方案2】:

如果没有每日数量、延迟阈值、资源可用性、报告要求、平台和工具限制等详细信息,很难回答。传统的 ODS 是在创建数据集市之前导入并存储规范化结构的方式。很棒,但对于大数据或实时分析来说不是最优的。使用 Hadoop 中的数据湖或虚拟化层的更现代的方法可能对您的组织不可行。

一般意见:

1) 从复杂性和性能的角度来看,重新规范化似乎是不必要的,除非您对规范化数据存储有一些持续的使用。

2) 无论您是否构建传统的星型模式或图表或任何应受报告要求和工具而非源数据格式约束的东西。顺便说一句,这些来源会改变。

3) “交易”对我来说听起来不像一个事实。例如,购买交易可以提供销售事实、销售周期的累积快照、渠道转换事实等。

4) 我不确定“账户”是客户,还是信用卡、在线支付服务、银行账户等余额账户。它们表示不同的 SCD 类型。无论如何,Google 足以获得有关构建这些维度的大量信息。

【讨论】:

以上是关于将非规范化数据加载到数据仓库中的主要内容,如果未能解决你的问题,请参考以下文章

如何将非结构化的 excel 电子表格加载到熊猫中?

数据仓库设计方法

SSIS包中的错误将数据加载到azure数据仓库中

如何使用 talend 中的 tmysql 行将唯一行从数据库加载到数据仓库中

如何将非规范化表映射到两个实体?

雪花数据加载最佳实践规范化还是非规范化?