问题标签 [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 回答
2290 浏览

sql - SCD 日期对的最佳实践(关闭/打开时间戳)

在实现时间日期时间对时,哪种方法更好?

方法一

与过滤子句一起使用,如下所示:

方法二

与过滤子句一起使用,如下所示:

注意事项:

方法 1 与 BETWEEN 子句语法(包括范围)兼容。出于这个原因,我认为这是最好的方法,但是 - 这是我关心的 - 关闭和打开时间戳之间总是存在差距!例如以下将(从业务角度不正确)返回任何内容:

不同的数据库在这里会有不同的精度。我想必须有标准(过滤时总是四舍五入到最接近的秒数),但只是想知道是否有任何其他理由支持方法 1(例如提议的双时间“AS OF”语法兼容性)?或者实际上,是否(以及为什么)方法 2 会更可取..

0 投票
0 回答
616 浏览

sql - SSIS在历史数据上慢慢改变维度类型2

我必须将以下数据集加载到维度表中,我需要检查贡献列上的渐变维度类型 2 。以下数据集上有历史数据,我需要加载包括历史数据在内的所有记录,然后将最后一条记录标记为活动(RowIsCurrent = Y)并将其他记录标记为不活动(RowIsCurrent = N,RowEndDate = GetDate())。ClientID 是业务密钥。处理这些历史数据的最佳方式是什么?

表结构:-
ClientID int、
Name varchar(20)、
Contribution Money、
EffectiveDate date、
RowisCurrent varchar(1)、
RowEndDate datetime

数据集
ClientID、名称、贡献、EffectiveDate
1,John ,1000,2012-12-31 1,John,
1100,2013-01-31 1,John,
1300,2013-03-31
1,John,1400,2013-10 -31

0 投票
1 回答
3974 浏览

ssis - SSIS 中的渐变维度变换不会更新

我使用 CSV 中的以下内容来测试 SCD。我认为它会识别 LocationID 并在必要时更新记录。但它没有。它只插入新记录。

我正在使用带有 Win Authentication 的 Visual Studio 2010 和 SQL Server 2012(我认为这不是权限问题,因为如果您查看已执行包的图片,它似乎根本不承认对历史数据的更改。 ) 我也有 Windows 7 家庭高级版。

原始中有很多空值,并且该集合也有更改,但未提交更改。另请注意,当我添加新位置时,即使 LocationID 相同,也会添加两者。

我的数据库

输入到 SSIS 包中。看没有空值!但是上面的数据没有更新。

这是我的 SCD 包中的图片

在此处输入图像描述

这是我将所有传入属性映射到数据库属性的地方。

我的 SCD 包屏幕

几乎所有数据都是历史数据,但没有更新 http://i.imgur.com/Z3OrCoB.png

对于下一个我尝试了不同的值,我选择哪一个或全部取消选择都没有区别。

http://i.imgur.com/5Xr3Pdv.png

我保持这个不变(从未改变)我已经启用和禁用了这个。没有结果 完成的屏幕

http://i.imgur.com/8wlC8s1.png

0 投票
1 回答
879 浏览

etl - 使用代理键(和 SCD)导入 DWH

我有一个数据仓库,它使用内部代理键和类型 2 缓慢变化的维度。在清算中,我们只有来自 erp 系统的业务密钥,如下所示:

Clearing 的图片,抱歉没有足够的声誉直接发布或超过两个链接

在数据仓库中,我们希望使用代理键(注意:文章价格从 500 美元更改为 1000 美元,并且文章尽可能使用代理键,此处仅适用于制造商)。

数据仓库的图像

如果我们只是使用业务密钥没问题,只需比较、更新旧条目、插入新条目。但是使用代理键的最佳方法是什么?

从清算中的数据仓库获取现有 ID(0 或 -1 表示尚不存在),然后比较条目?

在此处输入图像描述

将业务密钥也保存在数据仓库中,比较它们并更新 Ids 然后在数据仓库中?

i.pictr.com/3kqn6wb9ou.png

0 投票
2 回答
6431 浏览

data-warehouse - How to implement SCD type 3

A customer is changing the address let say 5 times.

How to implement CUSTOMER dimension using slowly changing dimension type 3?

0 投票
2 回答
1259 浏览

ssas - 具有父子层次结构聚合问题的 SCD 类型 2

我们有一个员工维度,其中包含我们在其上构建层次结构的经理(父子关系)的自我引用。

DimStaff 表:

事实表:

现在,以这个数据集为例,要求是

1-能够向下钻取层次结构

2- 选择一个人时聚合每个层次结构级别的值

我们怎么能这样做呢?(问题是我们构建了它,但第二个要求不起作用,因为多维数据集接受 Employee1 的两个状态作为两个单独的实体并且不会聚合它们。)

0 投票
1 回答
217 浏览

database - Problems defining normalized SQL database schema with recursive relationships and empty values

I have a question regarding the correct implementation of a Schema that I'm currently wrecking my head with:

We have machines, which consist of components, which consist of parts.

However, the relationships are as follows:

  • Machines (1) --> Components (N) - a machine is made up of various components
  • Components (N) --> Parts (N) - a component is made up of multiple parts, a part may be used in multiple components
  • Components (N) --> Components (N) - a component can also be made up of other components
  • Machines (N) --> Parts (N) - Some parts may also be directly assigned to a machine

Furthermore, both parts and components that are flagged as needs_welding=1 will have a price associated with them. These prices will change over time.

I'm not quite sure as to how to model the following aspects:

  1. How to relate the Parts directly to the machine table
  2. How to model the parent/child relationship between the components
  3. How to attach prices to the items (kinda reminds me of an SCD in a DWH, but I cannot seem to patch it together)
0 投票
1 回答
538 浏览

sql-server - 我在 SSIS 中缓慢变化的维度在不应该发生的情况下不断变化

我有一个 SCD 转换,当我重新运行相同的包时,即使没有任何更新,47 条记录也会更新。我看到的唯一不一致是这 47 条记录以数字 01N、10A 等开头。而且这些都具有相同的业务密钥。例如,它们的 ID 都是 729。

我该如何解决这个问题以防止它们更新。

在此处输入图像描述

这些是我对 SCD 的属性。上一个屏幕中的我的业务密钥是 ID。

在此处输入图像描述

这是数据。我注意到的唯一差异是相似的 ID,并且这些记录以数值开头。来自源的列与目标相似。ID 是 INT,DESCR 是 varchar(200)

0 投票
1 回答
1898 浏览

sql - 审计表与类型 2 渐变维度

在 SQL Server 2008+ 中,我们希望能够跟踪操作数据库中“客户”表的历史更改。

这是一个新表,我们的应用程序控制所有对数据库的写入,因此我们不需要触发器之类的恶意黑客。相反,我们会将更改跟踪构建到我们的业务对象层中,但我们需要找出要使用的正确数据库模式。

行数将低于 100,000,每条记录的更改数平均为每年 1.5。

我们至少有两种方法来对此建模:

  1. 作为名为 的类型 2 渐变维度表,其中包含、CustomersHistory的列(针对客户的当前版本设置为)和审计列,例如和。然后我们会在该表上构建一个视图,该视图被过滤为. 我们应用程序的大多数部分都将使用该视图进行查询,并且只有需要历史感知的部分才会查询基础表。为了提高性能,我们可以物化视图和/或在 EffectiveEndDate=NULL 上添加过滤索引。EffectiveStartDateEffectiveEndDateNULLChangeReasonChangedByUsernameCustomersEffectiveEndDate=NULL

  2. 带有单独的审计表。对记录的每次更改都会Customer写入Customer表一次,然后再写入CustomerHistory审计表。

从对 StackOverflow 问题的快速回顾来看,#2 似乎更受欢迎。但这是因为大多数数据库应用程序必须处理遗留和流氓作家吗?

鉴于我们是从一张白纸开始,这两种方法的优缺点是什么?你会推荐哪个?

0 投票
1 回答
69 浏览

sql-server - 连接列的性能 - 顺序重要吗?

我需要根据表中的其他两列创建一个连接列。一列是年份(10 个不同的值),一列是一个人的 ID 值(约 150,000 个不同的值)。这被不接受多列作为键值的 ETL 任务用​​作业务键,因此我需要将此值保存在我的数据库中。

也就是说,我可以选择如何创建该值,并且我想知道顺序(ID + Year 或 Year + ID)是否会以任何方式影响性能。如果年份先到,则前四个字符将始终是一组有限的实际年份之一。如果 ID 先出现,则每个用户都会改变。两者有什么区别吗?

此列将获得的唯一用途是在 ETL 加载期间,它将用于连接来自源表和临时表的数据以检查两者之间的差异。基值将在下表中,我计划在这些基值上创建一个聚集索引。

样本数据:

问题一:Composite_1 或 Composite_2 在 JOIN 期间会给我更好的性能吗?

问题二:我是否需要索引 Composite 列,如果需要,我应该单独/与其他人一起做吗?SSIS 任务将使用它进行内存中的 JOIN,我计划将它作为 ORDER BY 包含在我的 OLE DB 源组件中。

问题三:聚集索引是属于Composite列,还是Year和ID列?编辑:或者,因为我知道 Year 和 ID 不会影响 Composite 的顺序,我应该只包括所有三个吗?