Python中的星型模式

Python中的星型模式,python,pandas,powerbi,knime,Python,Pandas,Powerbi,Knime,我目前有一个项目,我从Firebird数据库提取数据,并使用Knime执行ETL过程,然后将CSV文件导入PowerBI,在那里我创建表关系并制定度量。 我用Knime总结了几个表,进行了非规范化。 我想完全迁移到Python,我正在学习 我想知道如何在Python中处理关系建模,例如星型模式。 在PowerBI中,有一个专门讨论它的部分,我在其中建立关系,指出它们是单向的还是双向的 到目前为止,我能想到的唯一一件事是在熊猫中工作,在每一个需要的情况/功能中加入,但在我看来,必须有更好的方法 如

我目前有一个项目,我从Firebird数据库提取数据,并使用Knime执行ETL过程,然后将CSV文件导入PowerBI,在那里我创建表关系并制定度量。 我用Knime总结了几个表,进行了非规范化。 我想完全迁移到Python,我正在学习

我想知道如何在Python中处理关系建模,例如星型模式。 在PowerBI中,有一个专门讨论它的部分,我在其中建立关系,指出它们是单向的还是双向的

到目前为止,我能想到的唯一一件事是在熊猫中工作,在每一个需要的情况/功能中加入,但在我看来,必须有更好的方法


如果您能指出我应该学会面对这一点,我将不胜感激。

我想我可以回答您的问题,因为我已经更好地理解了您在Python中所做的工作。我的报告堆栈还涉及用于ETL操作的Python和用于前端的Power BI,因此,即使有其他我不知道的方法,我也是这样处理的

虽然我在PowerBI中为我使用的数据模型创建了实际的连接,但实际上我们不需要事先告诉Python任何事情。powerbi是声明性的。您可以通过指定需要的相关信息来构建可视化,Power BI将在后端执行所需的操作以获取该数据。但是,为了做到这一点,您需要提供一些最基本的信息。因此,您需要以您希望的方式将数据建模到Power BI

相比之下,Python是必不可少的。你不是在最后告诉它你想要什么,而是告诉它你想要它执行什么指令。这意味着您必须自己给出所有说明,并且需要了解数据模型

因此,简单的答案是,您不需要处理关系建模。更复杂和正确的答案是,您需要围绕逻辑数据模型规划ETL工具。逻辑数据模型实际上并不存在于一个物理空间中,就像Power BI存储您告诉它的内容那样。这基本上取决于您知道表应该如何关联,并确保其中存储的数据允许这些转换发生

在Python中连接表时,根据需要执行连接操作,使用适当的函数(即
merge()
)结合您头脑中(或写下)的逻辑数据模型

我在这里包含的链接是一个开始研究/学习如何在更概念化的层面上思考数据建模的好地方,您需要:

您具体想用Python替换什么?您是否正在用它替换ETL流程,并将数据移动到可以将其拉入PowerBI的位置?或者你正在用Python替换一切,包括你的仪表盘?关于提取和转换的一切,我已经理解了我应该做什么,多亏了pandas的文档,但到目前为止我不理解的是我是否应该用Python以某种方式重新创建星型模式模型,或者这方面的方法是什么。如果我理解正确,您建议在ETL步骤和视图创建步骤中使用pandas,这样PowerBI只需读取平面文件而不必执行任何视图定义逻辑。这取决于具体情况。如果你知道你将需要什么“视图”,并且知道它们将是静态的,那么在我看来,完全在熊猫中处理它们是最好的选择。如果您需要将数据保存在单独的表中以处理各种视图,那么Power BI中的建模是可行的。但是,一般来说,第一种方法更适合我,因为它可以让你更精确地控制数据之间的关系,而不是让Power BI来处理。重要的一点是,你不应该像Power BI那样思考数据模型。这种方式仅仅是你头脑中/文档中/等等的逻辑数据模型的一个实例。这更像是一个想法,而不是需要始终在物理上完整地指定的东西。