【问题标题】:Star schema in Python PandasPython Pandas 中的星型模式
【发布时间】:2020-04-08 15:11:59
【问题描述】:

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

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

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

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

【问题讨论】:

  • 你想用 Python 替换什么?您是否正在用它替换您的 ETL 流程并将您的数据移动到可以将其拉入 PowerBI 的位置?或者您是否正在用 Python 替换所有内容,包括您的仪表板?
  • 一切,关于提取和转换,我已经明白了我应该做什么,这要归功于熊猫的文档,但到目前为止我不明白的是我是否应该以某种方式重新创建星型模式模型python,或者这方面的做法是什么。

标签: python pandas powerbi knime


【解决方案1】:

我想我现在可以回答你的问题,因为我对你在 Python 中尝试做的事情有了更好的理解。我的报告堆栈还涉及用于 ETL 操作的 Python 和用于前端的 Power BI,因此即使可能有其他我不知道的方法,我也是这样做的。

虽然我在 Power BI 中为我正在使用的数据模型创建实际连接,但我们实际上并不需要提前告诉 Python 任何事情。 Power BI 是声明性的。您可以通过指定要关联的信息来构建可视化,Power BI 将在后端执行所需的操作以获取该数据。但是,您需要为其提供一些最少的信息才能执行此操作。因此,您可以按照希望将数据建模到 Power BI 的方式进行通信。

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

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

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

我在此处包含的链接是开始研究/学习如何在更概念化的层面上思考数据建模的好地方,您需要: https://www.guru99.com/data-modelling-conceptual-logical.html

【讨论】:

  • 如果我理解你所说的正确,你建议在 ETL 步骤和视图创建步骤中都使用 pandas,以便 PowerBI 只需读取一个平面文件而无需执行任何操作查看定义逻辑。
  • 视情况而定。如果您知道您将需要哪些“视图”并且知道它们将是静态的,那么在我看来,纯粹在 pandas 中处理它们是最好的选择。如果您需要将数据保存在单独的表中以处理各种视图,则可以在 Power BI 中进行建模。但是,是的,一般来说,第一个对我来说效果更好,因为它可以让你更精确地控制数据的关联方式,而不是将其留给 Power BI。
  • 重要的一点是,您应该退后一步,不要像 Power BI 那样思考数据模型。这种方式只是您在头/文档/等中拥有的逻辑数据模型的一个实例。这更像是一个想法,而不是需要始终在物理上完整指定的东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-08
  • 2013-08-04
  • 1970-01-01
  • 2017-08-21
相关资源
最近更新 更多