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

sql - 如何将事实表加入(Kimball 类型 2?)SAS 中缓慢变化的日期

SQL 新手 - 我想将事实表 crselist 加入 crseinfo 表以获取正确的维度信息。我一直在研究一些相关的子查询,但没有一个给出期望的结果(如下)。crseinfo 表说从 199610 开始艺术 508 属于 09 学院,应该称为 OkArt..它在 200220 和 200300 更新。 Crselist 列出了实际教授的课程。

期望的结果将是:

参考 SAS 帮助页面(http://web.utk.edu/sas/OnlineTutor/1.2/en/60477/m70/m70_52.htm)似乎我可以执行以下操作:

但这不起作用。我对基于 SQL 的解决方案感兴趣 - 感谢您抽出宝贵时间。

0 投票
1 回答
479 浏览

sql - 在 SQL Server 中使用 MERGE 语句管理渐变维度

我正在尝试使用 T-SQL 构建一个缓慢变化的维度表,因为我注意到我无法在 SSIS 中使用 SCD,因为我有大量数据。

我需要你的帮助

我的表结构:

合并声明:

到目前为止,上述语句工作正常,但底部语句不起作用。

但是,我收到此错误消息:

消息 10710,级别 15,状态 1,第 15 行
MERGE 语句的“WHEN NOT MATCHED”子句中不允许“UPDATE”类型的操作。

我不知道如何解决此错误消息。

0 投票
1 回答
559 浏览

sql-server - SSIS 2012 - 将渐变维度 UpdateChangingAttributeHistory 设置为 true

使用 SCD 任务向导,我无法设置 UpdateChangingAttributeHistory 属性,它默认为 false。我可以使用高级编辑器将其设置为 true,但这不会更新生成的流程,因此行为没有改变。我需要做什么来触发 SSIS 重新生成流而不重新运行向导(它将 UpdateChangingAttributeHistory 设置回 false)?

我的目标是拥有一个类型 2 的 scd,它可以在发生更改时更新事实表。

0 投票
2 回答
1955 浏览

sql - 仅按日期缓慢改变维度

我有一个使用缓慢变化维度的数据仓库概念来跟踪旧版本的数据库表。所以,我用Log Trigger机制实现了它。

我的桌子是这样的:

我创建了一个历史表

然后,通过这样的触发器,我得到了历史:

而且,要查询历史表,我使用

现在,我的问题是:我的客户实际上只会按日期查询历史记录表(即没有一天中的时间),所以我需要获取那个日期的记录版本。我想到了两个选择:

  1. 更改触发器(如何?)每个日期只记录一个“历史”记录。

  2. 保持触发器原样,记录数据库中的所有更改(包括日期和时间),然后查询历史表以获取特定日期的最新版本(如何?)

我的感觉是第二个选项更容易实现,否则触发器可能会变得复杂(插入或更新,取决于当前日期的历史记录的存在)。

我需要一些帮助来选择正确的方向,并且我想在所选选项中提供所需的 SQL 查询示例。

0 投票
1 回答
166 浏览

sql - 用于在 OLTP 系统中实现行版本控制的 DataModel

我有下表

  • Person(PID, Name, Dob, AddressId) PID 是代理键(自动递增)

  • Address(AddressId, Line1, Line2, City, State) AddressId 是代理键(自动递增)

我的很多事务表中都使用了 PersonID (PID)。由于一个人的地址可能会随着时间的推移而改变,我需要将记录版本存储在数据库中,以便我可以根据时间片引用正确的版本。我该怎么处理。

我正在考虑有这样的解决方案

  • 使用同一张表来存储历史,例如
  • 人员(PID、姓名、Dob、AddressId)
  • 地址(AddressId、Line1、Line2、城市、州、StartDate、EndDate、LastUpdatedBy、LastUpdatedDate)

让我们假设人的初始记录如下

现在地址在2012年更改为 PID 100。我正在考虑

如果地址在2014 年再次更改为 PID 100。它看起来像

现在我可以在不更改代理键的情况下从同一个表中查询历史数据和当前数据。我不必参考历史表格,因此不会轰炸逻辑和表格。

假设我的地址代码是唯一的,这种方法不会让我对表强制执行唯一键约束。我该如何处理?

请就此提出不同的方法和反馈。

0 投票
1 回答
270 浏览

ssas - SSAS 和 2 类 SCD 数据

我无法使用 SSAS 和 2 类 SCD 数据获得预期结果。下面,我列出了我正在使用的简单表、我得到的 SSAS 输出以及我希望的 SSAS 输出。我觉得 SSAS 应该能够像我想要的那样检索数据;我相信我只是很难正确“连接”:)。

我正在使用的表

加上一个 DimDate 表,其中包含从 01/01/1900 -> 12/31/2050 输入的每个日期作为 PK,以及它们的各种属性,如月份中的日期、星期几等。等等。

输出(当前与预期)

我试图按月查看客户数据,我得到了这个:

当我期待(并希望)看到这个时:

为什么我的 SSAS 多维数据集无法识别客户 A 在 2 月和 3 月更改为客户 ABC?

希望对我的立方体当前是如何连接的提供一些见解:

-FactSales ClientID 链接到 DimClient AltID
-FactSales SalesDate 链接到我的 DimDate PK 字段

我无法以任何方式将 DimClient 链接到 DimDate。

感谢您的意见和帮助解决我的问题!

0 投票
1 回答
64 浏览

data-warehouse - 数据仓库和数据集市新手

我对 Data Warehousing 和 Marts 完全陌生,想就学习和获取知识的最佳资源寻求一些建议,让我开始走上正确的道路。我有一个项目要做,但需要一些指导或某个地方才能真正开始。

问题是我有几周的时间来创建一个带有 Fact 和 Dims 的小型市场,然后需要编写存储的过程以供 GUI 输入和输出。我需要知道如何创建一个脚本化的 SCD,我有一个基本的想法并且可以使用 MERGE 脚本。

0 投票
1 回答
88 浏览

sql - Oracle SQL - SCD 跟踪随时间变化的属性

我遇到以下错误:

我试图构建一个水平视图,了解 BOOK_NO 和 WALK_NO 属性随时间的变化。

我认为一种合理的方法是对 Effective_to 日期进行排名,然后将 book_no||walk_no 属性解码为该值......但不确定从这里去哪里!

下面的SQL:

任何建议都非常感谢!

0 投票
1 回答
1912 浏览

data-warehouse - 事实表链接到渐变维度

我正在努力理解为数据仓库建模特定场景的最佳方法。

我有一个 Person 维度和一个 Tenancy 维度。一个人在任何时候都可能有 0 个、1 个或(很少)多个租约,并且随着时间的推移通常会有一系列的租约。一个租约可以有一个或多个与之关联的人。与租约相关的人会随着时间而改变,租约通常会持续很多年。

一种选择是将租赁参考、开始和结束日期作为类型 2 SCD 列添加到人员维度。只要我忽略一个人有多个并发租约的可能性,这将很有效。但是,我在数据仓库的其他领域也面临类似的设计问题,并且不可能忽略多个关系。

另一种选择是将关系建模为累积快照事实表。我不确定这在实践中的效果如何,因为我只能将其链接到 Person 和 Tenancy 的一个版本(两者都将具有 2 类 SCD 列),这似乎使得无法生成当前或将人和租户联系在一起的历史报告。

有没有推荐的方法来建模这种类型的关系?

根据 SQL.Injection 给出的患者回答和评论进行编辑

我制作了一个基本模型,显示了 SQL.Injection 所描述的模型。 推荐型号

我已将租赁开始/结束日期移至“垃圾”维度 (Dim.Tenancy),并将人员租赁开始/结束日期添加到事实表中,因为我认为这是描述关系的更准确方式。

然而,现在我从视觉上看到它,我认为这与我开始使用的模型根本没有什么不同,除了事实表是定期快照而不是累积快照。它确实似乎遭受了同样的缺陷,即每当我在任何维度中更新类型 2 缓慢变化的属性时,它都不会反映在事实中。

为了使这项工作能够反映当前的更改并允许历史报告,似乎每次在任何维度上发生 SCD2 更改时,我都必须在事实表中添加一行。然后,为了通过加入同一实体的多个版本来防止过度计数,我还需要添加其他相关维度的新版本,以便我有新的键可以加入。

我需要再考虑一下。我开始认为数据库模型是正确的,而我对如何使用模型的理解是错误的。

在此期间,欢迎提出任何意见或建议!

0 投票
1 回答
350 浏览

sql-server-2012 - Microsoft SQL Server 2012 渐变维度 历史属性 更改日期和状态

我在带有 VS 2010 的 MS SQL Server 2012 上遇到以下问题:

我想使用 SSIS for Slowly changed Dimensions 来更改历史属性。由于向导仅让我有机会决定将信息(记录是否已过时)保存在一个列或两个日期列中(请参阅https://msdn.microsoft.com/en-us/library /ms187958.aspx)。但我想两者都做,将信息保存在“状态”列中,并更新“开始日期”和“结束日期”。

使用 SSIS 后员工表的外观示例:

员工 Emma Johnson 结婚,因此在 20-02-2013 将她的姓氏更改为 Smith。

员工ID | EmployeeIDAlternateKey | 名字 | 姓氏 | 开始日期 | 结束日期 | 地位

1 | 123 | 艾玛 | 约翰逊 | 01-01-2013 | 20-02-2013 | 空值

2 | 123 | 艾玛 | 史密斯 | 20-02-2013 | 空 | 当前的

谢谢你的帮助!