2017-04-20 40 views
3

我有一个用于销售的多维OLAP多维数据集。但我拥有庞大的数据库。首先,我完成了olap多维数据集的全部处理。但每次它都会完成,因此需要很多时间。我必须进行增量处理。但是我没有任何期限的这个问题。你能帮我吗?我该如何做OLAP多维数据集增量处理?

我应该如何遵循路径?我发现一些文章处理这个问题,例如this之一。

但我不知道我会写什么条件在分区查询。

enter image description here

回答

2

划分事实表的典型方法是由日期。您的源代码中有一列Sales_TransactionDate列,因此这将作为分区属性显而易见。

根据您的数据量以及您想要创建的分区数量,您可以按年,月,日或其中任何分区进行分区。

这个想法是,你会处理整个立方体,只是一次。然后,每个(例如)晚上,您都会重新处理当前(例如)月份的分区。只有在源系统中的旧数据(即直到最后(例如)月末数据)决不会更改的情况下才有效。如果确实发生了变化,您将错过更改,因为上个月的分区不再被处理。

所以这是增量处理的一个重要问题。您必须知道在源系统中第一次出现数据之后多久才能更改(显然,只有与立方体有关的更改 - 如果多维数据集不使用更改的某些列并不重要) ,并且在什么阶段它会陷入一个不变的状态。

这是一个ETL的问题,涉及到你如何(如果有的话),使用类型2缓慢变化的属性,并且到源系统是否有当行最后更新的任何迹象(如LASTUPDATED 日期时间柱)。

(编辑 - 根据下面评论)

你需要让你保证只是通过处理最近的分区来捕获所有可能的变化来调整分区大小。例如,如果某行在其交易日期之后最多可以更改6个月(或者您使用的任何分区日期),则必须处理最近6个月的数据以不会错过任何更改。

但是这个约束只影响最近分区的大小 - 较旧的分区可以随意调整大小。如果源系统中存在将行标记为“更改”的机制,则可以减少最新分区中的处理量。 (一个例子是“LastUpdated”列,当行更新时总是设置为当前日期/时间,另一个是SQL CDC)。

+0

嗨SebThU,你可以给增量olap立方体的另一个建议? –

+0

我需要一个示例 –

+1

@SebTHU - 为了澄清,LastUpdated只能在静态时才使用。如果LastUpdated在处理多维数据集后发生更改,则需要使用新分区再次处理旧分区,以确保记录不会被计算两次。 –

相关问题