为 Tableau 连接在 Postgres 中存储计算列是否不好?
Is it bad to store calculated columns in Postgres for a Tableau connection?
我最近购买了一个专业许可证(来自个人),并将一些数据加载到 postgreSQL。这是我第一次使用数据库,但我已经阅读了很多关于它们的资料(SQL 揭秘,数据仓库)
我使用 .csv 文件的习惯是在原始数据中创建计算数据。我使用 pandas(python 分析库)来清理我的文件、添加列、进行连接等。这帮助我简化了 Tableau 中的一些计算字段,我的最终用户有时会打开这些文件,它有额外的字段真是太好了。
示例:
在 pandas 中,我可以创建一个基于其他列的一些逻辑和数学的列。这将在原始数据中创建一个列 'redundant',因为它可以计算。
或者我可以在 Tableau 中使用 IF 语句或 LOD 计算来计算。我读过创建可以计算的列并将它们存储在数据库中是不行的。另一方面,让 Tableau 为持久和常见的值做额外的 work/calculations 似乎有点愚蠢。
(示例,inbound_interaction = 1,如果某一列 = 'inbound' 而另一列 = 不为空)(示例 2,total_time = 几列的总和)
关于这个主题有什么想法或最佳做法吗?由于我这周才刚刚开始新的生活,所以我不妨有个好的开始。
问题有点笼统,没有金弹药。
您必须考虑的某些成本是
- 过时数据与新数据
- Space 被物化列使用
- 服务器与客户端的计算成本
- 维护具体化列的成本
现在我们有 4 个解决方案:
- 表格中的原始数据,由客户完成的额外计算
- Views that present calculated data to the client but which are done on the server on the fly, these can be aided by indexes on expressions。此外,这些视图还可以更轻松地选择给定用户可以访问哪些数据,并且您可以拥有很多而无需使用 space。
- Materialized views 类似于视图但存储计算数据,不新鲜但比某些 self-made 物化更容易维护。它们也可以有索引
- 包含数据库外部应用程序计算的数据的表,用于您的数据库无法处理的事情
我建议使用索引,如果效果不佳,请切换到物化索引。当然,您可能会采用部分解决方案,因为某些数据需要始终保持最新,其他数据可能会在服务器上花费大量时间,但访问频率不足以将其具体化存储,而其他一些数据可能计算速度非常快但访问速度很快很多时候实现它会使整个系统性能更好。
我最近购买了一个专业许可证(来自个人),并将一些数据加载到 postgreSQL。这是我第一次使用数据库,但我已经阅读了很多关于它们的资料(SQL 揭秘,数据仓库)
我使用 .csv 文件的习惯是在原始数据中创建计算数据。我使用 pandas(python 分析库)来清理我的文件、添加列、进行连接等。这帮助我简化了 Tableau 中的一些计算字段,我的最终用户有时会打开这些文件,它有额外的字段真是太好了。
示例: 在 pandas 中,我可以创建一个基于其他列的一些逻辑和数学的列。这将在原始数据中创建一个列 'redundant',因为它可以计算。
或者我可以在 Tableau 中使用 IF 语句或 LOD 计算来计算。我读过创建可以计算的列并将它们存储在数据库中是不行的。另一方面,让 Tableau 为持久和常见的值做额外的 work/calculations 似乎有点愚蠢。
(示例,inbound_interaction = 1,如果某一列 = 'inbound' 而另一列 = 不为空)(示例 2,total_time = 几列的总和)
关于这个主题有什么想法或最佳做法吗?由于我这周才刚刚开始新的生活,所以我不妨有个好的开始。
问题有点笼统,没有金弹药。 您必须考虑的某些成本是
- 过时数据与新数据
- Space 被物化列使用
- 服务器与客户端的计算成本
- 维护具体化列的成本
现在我们有 4 个解决方案:
- 表格中的原始数据,由客户完成的额外计算
- Views that present calculated data to the client but which are done on the server on the fly, these can be aided by indexes on expressions。此外,这些视图还可以更轻松地选择给定用户可以访问哪些数据,并且您可以拥有很多而无需使用 space。
- Materialized views 类似于视图但存储计算数据,不新鲜但比某些 self-made 物化更容易维护。它们也可以有索引
- 包含数据库外部应用程序计算的数据的表,用于您的数据库无法处理的事情
我建议使用索引,如果效果不佳,请切换到物化索引。当然,您可能会采用部分解决方案,因为某些数据需要始终保持最新,其他数据可能会在服务器上花费大量时间,但访问频率不足以将其具体化存储,而其他一些数据可能计算速度非常快但访问速度很快很多时候实现它会使整个系统性能更好。