使用 Python 从 csv 文件创建星型模式

Posted

技术标签:

【中文标题】使用 Python 从 csv 文件创建星型模式【英文标题】:Creating star schema from csv files using Python 【发布时间】:2018-07-03 09:37:48 【问题描述】:

我有 6 个维度表,都是 csv 文件的形式。我必须使用 Python 形成星型模式。我不确定如何使用 Python 创建事实表。事实表(理论上)至少有一个与维度表通用的列。

如何创建事实表,记住多个维度表中的数量应该在事实表中正确对应?

我不允许透露代码或确切数据,但我会添加一个小例子。文件 1 包含以下列:student_id、student_name。文件 2 包含:student_id、department_id、department_name、sem_id。最后文件 3 包含 student_id、subject_code、subject_score。 3 个维度表采用 csv 文件的形式。我现在需要事实表包含:student_id、student_name、department_id、subject_code。我怎样才能以这种形式形成事实表?感谢您的帮助。

【问题讨论】:

【参考方案1】:

阅读某些博客似乎不是在内存中处理 python 中此类情况的好方法,但如果下面的帖子有意义,您仍然可以使用它

事实加载

DW 加载的第一步是尺寸一致性。稍微聪明点,上述处理都可以并行完成,占用大量 CPU 时间。为了并行执行此操作,每个一致性算法都构成了大型 OS 级管道的一部分。必须重新格式化源文件,以便为每个维度的 FK 参考保留空列。每个一致性进程读取源文件并写出相同的格式文件,其中填充了一维 FK。如果所有这些一致性算法形成一个简单的 OS 管道,它们都并行运行。它看起来像这样。

src2cvs 源码 |符合1 |符合2 |符合3 |加载 最后,您使用 RDBMS 的批量加载器(或用 Python 编写自己的,这很容易)从完全填充了所有维度 FK 的源记录中挑选实际的事实值和维度 FK,并将它们加载到事实中表。

【讨论】:

【参考方案2】:

您想添加您目前遇到的任何代码吗?请添加Minimal, Complete, and Verifiable example,包括文件内容和预期输出

【讨论】:

我不允许透露代码或确切数据,但我会添加一个小例子。文件 1 包含以下列:student_id、student_name。文件 2 包含:student_id、department_id、department_name、sem_id。最后文件 3 包含 student_id、subject_code、subject_score。 3 个维度表采用 csv 文件的形式。我现在需要事实表包含:student_id、student_name、department_id、subject_code。我怎样才能以这种形式形成事实表?感谢您的帮助。 @AkshayVenkatesh 请编辑您的问题以包含该信息。对不是答案的答案的评论不适合这样做。 @AdrianW 我已经编辑了我的问题。然而,因为我没有尝试/没有代码而投反对票是不合理的,因为我已经提到现在严格允许我披露任何代码或数据。我已经尝试过了,但我不能透露任何信息。 @pack24 请阅读how to ask。不要假设每个人都可以在没有背景信息的情况下猜出您的问题。这就是为什么通常需要MCVE 的原因。如果您因为机密而无法提供该信息,那么向公共场所寻求帮助可能不是一个好主意。如果您可以提供足够相似的内容来描述您的问题而不会违反您的保密限制,那没关系。因此,我现在撤销了我的反对票。

以上是关于使用 Python 从 csv 文件创建星型模式的主要内容,如果未能解决你的问题,请参考以下文章

在数据仓库中从星型模式创建视图

python读写csv时中文乱码问题解决办法

csv文件的创建和打开

示例星型模式数据集

从 2 个表开始的星型模式

从 HTML 页面上的多个帖子中提取三个文本项到 csv 或类似文件中?