云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

华为云_佛山公司网站建设_安全稳定

小七 141 0

跟踪维度内的历史更改是数据仓库中的一项常见任务。在HANA sidecar数据库(SCD)中实现这一点需要明确的设计重点。在某些情况下,数据源系统会维护日期和时间戳,以表示记录或值的创建、更改或有效性阈值。在SAP系统中,记录、维度的创建、更改或有效性日期通常会维护,但并不总是维护,属性或值。其中一个例子是SAP人力资本管理(HCM)微型主信息类型,如下所示:

以上信息类型使用开始(BEGDA)日期和结束(ENDDA)日期进行版本控制,从而创建有效范围。在本文中,我使用以下三个表演示了一个简化的场景,每个表都有多个有效的开始/结束时间戳,以显示如何使用SAP HANA计算视图将数据合并并聚合为有序的历史结果。

执行下面的SQL脚本,然后预览生成的表和数据。

每个表都包含一个人员ID(PERNR)的行,其属性stat(stat,STAT1,STAT7)值不断变化更改由有效起始(BEGDA)和有效终止(ENDDA)日期范围表示。在这个例子中,我们将应用BEGDA的包含和ENDA的排除。PERNR、BEGDA和ENDDA的每个表组合为行创建一组唯一的键。

表:PA0000

表:PA0001

表:PA0007

这里是合并三个表后的最终结果:

三个表的信息现在合并到一个维度视图中。每一行表示具有不同开始日期和结束日期的属性的版本更改。例如,员工03151228的第一个更改是开始日期20180116,发发淘客助手,统计值从A更改为B.

那么,我们如何实现?我们定义了两个步骤来完成此任务。

任务1–收集所有日期,然后使用SAP HANA Rank节点构建新的有效开始/结束日期范围。

1)收集三个PA表中的日期。BEGDA和ENDDA列被重命名为DATES

投影节点:PR\u PA0000\u BEG

投影节点:PR\u PA0000\u END

2)使用Union节点合并所有日期

合并(all)后的结果如下。存在一些重复日期,大数据对比,如20180116、99991231等

3)通过应用聚合节点删除重复日期。日期现在将是不同的。

4)为了划分每个时间片,我们使用升序排序为每个时间片生成一个秩ID(假设每个时间片最多有100000个时间片)

秩日期的数据预览

5)使用下面的公式导出列前导秩ID

接下来我们将结果分成两个数据集。第一个包含PERNR、DATES和LEAD\u RANK\u ID。第二个包含PERNR、DATES和RANK\u ID

第一个数据集第二个数据集

6)在第一个和第二个数据集之间应用以下左外联接条件。从第一个数据集中,暴露日期并将其重命名为BEG\u DATE。从第二个数据集中,大数据中心,显示日期并将其重命名为结束日期。

JN\u BEG\u END上的日期预览

7)添加过滤器,删除结束日期为空的最后一行。

8)任务1的最终结果

任务2–我们现在有八行(见上文)具有正确的日期范围,但没有原始的三个表属性。我们可以通过将最初的三个基表与新的数据范围连接起来来添加相应的属性。SAP HANA临时联接在这里不适用,因为我们使用的是日期范围,而不是过帐日期之类的临时列。相反,我们可以编写一个SAP HANA SQL脚本来应用日期范围查找。

这里是一个图形化的建模解决方案,快速自助建站,最终的计算视图如下

1)选择PA表等,PR\u PA0000

2)在新的日期范围和PERNR上的PA表之间创建一个左外联接

PERNR上的左外联接

请参见左外联接结果如下。第一行是一个有效的记录,wap自助建站,如BEG\u DATE>=PA00\u BEGDA和END\u DA