聚合作为ETL的一部分还是在数据库中?

时间:2017-05-25 19:06:53

标签: postgresql database-design etl

当数据是否应该在ETL工作程序的内存中聚合(例如,使用pandas groupby或pd.pivot_table)而不是在数据库级别执行groupby查询时,是否存在一般偏好或最佳实践?< / p>

在可视化层,我连接到最近30天的详细交互级数据,然后是最近几年的聚合数据(每日级别)。

我想如果我计划实现聚合表,那么最好在ETL阶段就这样做,因为这可以远程完成,而不是浪费数据库服务器的资源。这是对的吗?

2 个答案:

答案 0 :(得分:1)

如果您担心的是尽可能减少源数据库服务器的负载,最好将表从源数据库拉到临时区域并在那里进行连接和聚合。但要注意ETL工具在源数据库表上执行嵌套循环连接,即拉入其中一个表,然后对另一个表运行数千个查询以查找匹配的行

如果您的目标是尽可能快速有效地执行联接和聚合,请务必将其推送到源数据库。这可能会给源数据库带来更多负担。我说“可能”因为如果您只需要在单个表上进行聚合,那么在源数据库中执行此操作可能比提取整个表更便宜。

答案 1 :(得分:0)

如果您按天聚合,如果您的老板希望按小时或星期汇总该怎么办?

一般规则是:您的事实表粒度应尽可能精细。然后你可以向下钻取。

您也可以创建预聚合表,例如按小时,天,周,月等。这些天空间很便宜。

Pentaho Aggregation Designer这样的工具可以为您自动执行此操作。