在OLAP计算过程中使用哪些技术处理不同的时区?

时间:2015-06-22 04:57:12

标签: bigdata business-intelligence olap

我正在读一本关于数据仓库的书。它告诉我,如果我有一个日期时间数据,我应该将它存储为单独的列:年,月,日和原始日期时间(毫秒)。需要进行聚合(参见更新部分) - 按日期,月份等进行聚合。但是,如果我需要针对不同时区进行聚合,该怎么办?是的,可以在用户界面上显示UTC +时区,但如果企业希望在“转移”的日期看到聚合,看不到那一天从00:00 + 07开始呢?

注意

可以计算每个时区的每次聚合(年,月,日),但需要太多的计算(据我所知)。
也许有更好的方法?或者每个时区的每个计算都是一个常见的解决方案?

更新

关于聚合。通过aggreagetion我的意思是,有一个进程按计划运行(它首次运行所有数据,然后按计划运行仅新进程)。所以这个过程,当它“看到”新数据时,它会计算所有列的聚合。例如,假设数据是cutomer订单,它有成本,用户ID和日期。因此,使用1个cutomer命令处理抓取行并在几个OLAP多维数据集单元格中“添加”此信息:日,月和年。假设客户在$1上使用22.06.2015下订单。此订单数据(通常是成本)会在以下OLAP单元格中“添加”:22天,06月和2015。我不是合格的OLAP设计师,并且单元格可能不同(例如,它可以添加到22.06而不是22),但是想法是将数据放入单独的单元格中以进行查询优化,例如:从一个多维数据集单元22.06.2015中选择成本总和而不是22.06.2015上所有订单的运行计算要快得多。但是在这种情况下设计日从UTC开始,如果我需要从不同的时区开始呢?通过这种方法,数据聚合增加了24倍。 :(

以UTC格式存储日期并在带有偏移量的UI上显示它是一种常见做法,但在我需要预先计算时不在OLAP设计中。

1 个答案:

答案 0 :(得分:0)

但首先,定义您的"仓库粮食"在这个水平上,这将使其他聚合/计算更容易制作和维护。

在我看来,你应该"处理&映射"数据仓库和ETL级别的业务需求。是的,将每个日期级别保留在不同的列上,您将能够进行聚合" easy&简单&#34 ;.不要担心添加另一个级别,例如你的" 24h聚合"。 OLAP是为这种方法构建的。

如果您想避免额外的聚合,请创建专用的数据集市。您的事实表将是accumulating snapshot,而不是事务事实。接下来创建了Dim" UTC"处理您的要求。您将聚合工作从OLAP级别移动到ETL级别。

希望这有帮助。