问题标签 [scd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1982 浏览

pentaho - 如何使用 Pentaho 处理 Amazon Redshift 中缓慢变化的维度?

由于 Amazon Redshift 针对读取而不是写入进行了优化,我如何使用 ETL 工具(在我的情况下为 Pentaho 数据集成)管理渐变维度过程?

由于 ETL 工具会逐行进行更新/插入(维度查找/更新),因此性能会非常低。

有没有人已经经历过这个问题?

0 投票
3 回答
328 浏览

sql - SSIS 业务密钥重复(多个 LOBS)

提前感谢您查看此内容。

我准备了一个数据仓库,并正在使用来自 2 个系统的客户信息填充客户表。一个系统中的客户与另一个系统中的客户具有相同的业务密钥。

区分两者的最佳方法是什么,所以我不想更新记录并保持良好的数据完整性。

我想知道系统标志,但我不确定。

欢迎所有建议/问题。

0 投票
1 回答
869 浏览

oracle - Oracle 11g - 基于关系模型中的现有历史数据构建类型 2 SCD

我是一名 ETL 开发人员,目前的任务是根据关系数据库中的现有历史数据开发类型 2 SCD。我完全有能力创建一个负责跟踪数据未来更改的 2 型 SCD,但是当涉及到手头的任务时,我完全没用。

关系模型在我们的 ODS 中。基于该关系模型,我应该在我们的 DW 维度中构建平面记录。有多个属性需要监视更改,每个属性都位于关系模型的特定相关表中。历史更改必须每天保存,如果同一属性发生多次更改,则仅保留最后一次。

我该如何解决这个问题?我迷路了。提前致谢。

PS 我们说的是具有 20-3000 万行和多个属性的表,这些属性可能在任何给定时间发生变化,因此必须在 SCD 中产生新记录。

0 投票
2 回答
1935 浏览

etl - 设计具有多个数据源的维度

我正在设计具有多个数据源的几个维度,并且想知道其他人做了什么来对齐每个数据源的多个业务键。

我的示例:我有 2 个数据源 - 订购系统和执行系统。订购系统有关于付款和应该发生什么的详细信息;执行系统有关于实际发生的事情的详细信息(花了多长时间等,谁在订单上执行)。来自两个系统的数据需要创建一个单一的事实。

在 Ordering 和 Execution 系统中,它们都是 Location 表。两个系统的业务密钥通过 esb 映射。两个系统中的属性构成了关于单个位置的完整图片。计费信息在 Ordering 系统中,经纬度在 Execution 系统中。并且位置名称存在于两个系统中。

您如何设计 SCD 以适应从两个系统到维度的变化?

我们遵循相当严格的 Kimball 方法 - 仅供参考,但我愿意查看每个人的解决方案。

0 投票
0 回答
159 浏览

database - 如何从缓慢变化的实体中加载数据仓库维度?

我正在从已经使用 Kimball 类型 2 方法跟踪行更改的源系统 (OLTP) 创建一些维度。我在他的最新书中读到,他称这些为“缓慢变化的实体”,但他没有解释如何将它们加载到数据仓库中。

目前我的想法是从实时数据库中复制“Valid From”和“Valid To”字段,并在我的类型 2 维度中使用这些字段,而不是使用当前日期的常用方法 - 1 来使行过期。这样尺寸将与活动表相同。

加载数据时,我必须加入自然键和“有效自”日期以匹配行(因为源表将重复自然键,因为它是类型 2)。

有没有人看到我的方法在基本上使用源系统来跟踪更改方面有任何问题?

0 投票
1 回答
548 浏览

xml - 使用 SCD 从 complexType 中选择 xsd:element

我正在尝试使用 SCD 选择 complexType 的子元素,但 SCD 选择了一个 complexType。SCD 文档很差,我不明白如何正确选择子元素。这是 XSD 片段:

我编写了以下绑定:

我也尝试过以下绑定,但有了这个,它甚至不会生成源代码。

0 投票
1 回答
161 浏览

sql - Using a date field for matching SQL Query

I'm having a bit of an issue wrapping my head around the logic of this changing dimension. I would like to associate these two tables below. I need to match the Cost - Period fact table to the cost dimension based on the Id and the effective date.

As you can see - if the month and year field is greater than the effective date of its associated Cost dimension, it should adopt that value. Once a new Effective Date is entered into the dimension, it should use that value for any period greater than said date going forward.

EDIT: I apologize for the lack of detail but the Cost Dimension will actually have a unique Index value and the changing fields to reference for the matching would be Resource, Project, Cost. I tried to match the query you provided with my fields, but I'm getting the incorrect output.

FYI: Naming convention change: EngagementId is Id, Resource is ConsultantId, and Project is ProjectId

I've changed the images below and here is my query

Example:

enter image description here

enter image description here

enter image description here

I'm struggling with writing the query that goes along with this. At first I attempted to partition by greatest date. However, when I executed the join I got the highest effective date for every single period (even those prior to the effective date).

Is this something that can be accomplished in a query or should I be focusing on incremental updates of the destination table so that any effective date / time period in the past is left alone?

Any tips would be great!

Thanks, Channing

0 投票
1 回答
38 浏览

data-warehouse - 数据仓库记录数时间线

我的 ERP 数据库中没有销售订单的历史信息。我有一个包含销售订单的表格。销售订单一经批准,即转化为发票,并删除记录的销售订单。

我可以在 ERP 中编写一个仅包含我需要的信息的历史表。我认为这是应该由数据仓库解决的问题(也是出于个人兴趣)。

我想看看截至日期我有多少销售订单。例如,我想查看按月平均有 X 笔总价值为 XXX 的订单。

我的想法是在哪里添加列“Valid from”和“Until to”。从那里我被阻止了,我最初虽然在哪里使用 SCD,但据我所知,不可能在主键上这样做。

我是否需要创建一个新的事实表(就像我在 ERP 数据库中所做的那样)?我不想也对销售订单表中的插入触发器或删除触发器进行编程。我们在一天结束的时候清理销售订单表,当我们在晚上更新数据仓库时需要更新它。对于这种情况,我不需要考虑订单不会被批准并且我会存储不相关的记录。

0 投票
1 回答
242 浏览

etl - 哪个是维度的最佳方法(SCD-2 或 SCD-1 + 全新维度)

假设我有以下情况:

具有一些非易变属性的维度产品(描述和直径 - 它们只能通过 SCD-1 更改进行更改以进行更正)和一个可能易变的属性(销售组,同一产品可能随时间而变化)。

因此,当一种产品的这些易变属性发生变化时,我需要以某种方式跟踪它们。

我有这两种方法:

对于两者:继续将 SCD-1 用于非易失性属性。

方法 #1:在 product_dim 中使用 SCD-2 仅用于易失属性。

在此处输入图像描述

方法二:让销售组成为一个全新的维度,每次销售都将跟踪 ETL 时刻的当前价值。这里不需要 SCD-2。

在此处输入图像描述

我是数据仓库的新手,我试图了解哪个更好以及为什么。我的目标之一是使用 OLAP 软件来阅读所有这些内容。

0 投票
2 回答
106 浏览

sql - Postgres 索引

我是 Postgres 的新手。

我们使用 Postgres 在我们的项目中实现了 SCD type-2。输入文件是一个完整的刷新文件,每天大约有 3000 万条记录。

帐号是关键列。

新记录的大约数量为 20K/天。如果源中缺少记录,则该记录将在目标中以结束日期关闭。关闭的大约记录数 - 10k/天

查询的运行时间正在稳步增加。索引是否有助于加快进程?

对要使用的索引有什么建议吗?