Snowflake cloud data platform 在Data Vault v2.0.2中,处理驱动键关系的最佳做法是什么

Snowflake cloud data platform 在Data Vault v2.0.2中,处理驱动键关系的最佳做法是什么,snowflake-cloud-data-platform,data-vault,Snowflake Cloud Data Platform,Data Vault,我们正在雪花数据库中使用data Vault方法实现一个新的数据存储。我们的目的是尽可能保持最新标准和最佳实践,例如,仅插入的方法,并试图避免各种反模式,如在可行的情况下推动关键关系 下面是一个简化的例子,我们的数据中有一部分与随时间分配给酒店的评级有关,比如酒店星级或类似的评级 此操作的中心是一个将属性连接到评级的表。以下示例显示了针对两个不同方案的单个属性的评级历史记录 PropertyRatingID PropertyID RatingSchemeID RatingID Effe

我们正在雪花数据库中使用data Vault方法实现一个新的数据存储。我们的目的是尽可能保持最新标准和最佳实践,例如,仅插入的方法,并试图避免各种反模式,如在可行的情况下推动关键关系

下面是一个简化的例子,我们的数据中有一部分与随时间分配给酒店的评级有关,比如酒店星级或类似的评级

此操作的中心是一个将属性连接到评级的表。以下示例显示了针对两个不同方案的单个属性的评级历史记录

PropertyRatingID  PropertyID   RatingSchemeID RatingID   EffectiveDate
1                 1            1              1          2020-01-01
2                 1            1              2          2020-01-02
3                 1            1              1          2020-01-03
4                 1            2              3          2020-01-02
5                 1            2              4          2020-01-03
有关数据结构的相关信息

PropertyRatingID是确保唯一性的身份密钥,没有业务意义。 在任何给定的时间,一个属性只能对一个方案进行单一评级,但可以在多个方案下进行评级 PropertyID、RatingSchemeID和EffectiveDate不要求为 独特的组合。 生效日期不代表记录输入到系统中的日期,可以追溯到过去相当长的时间,从而在生效日期和应用更改的日期之间形成双时态。 PropertyID、RatingSchemeID和RatingID都是提供描述性数据的其他表的外键。在我们的模型中,属性本身已经作为一个中心存在。 上述活动的时间线如下图所示

Date        Scheme1Rating  Scheme2Rating
2020-01-01  1              NULL
2020-01-02  2              3
2020-01-03  1              4
2020-01-04  1              4
我对此建模的最初尝试是为RatingID构建一个中心,一个属性和评级之间的链接,以及一个使用PropertyRatingID连接到链接的卫星,该卫星包含所有其他信息,主要是BrandID和EffectiveDate,以使其多活动。这证明非常难以使用,因为changes PropertyID和BrandID背后的驱动键分布在链路和卫星之间

就情况的双时态而言,重点将是获取最近记录的一组生效日期,即最新系统日期,以创建随时间变化的评级历史记录,例如,EffectiveEndDate相当于LEADEffectiveDate在原始表上按PropertyID超额分配,按EffectiveDate ASC分级ID订单。虽然我们不会定期使用过去系统时间的价值记录,但我们偶尔会特别查看这些记录,以解释报告期之间历史的变化

一个简单的解决方案是跨源系统中的多个表进行连接,将数据展平,将其分离,并根据评级方案生成卫星,并将其直接连接到属性中心。这将为我们提供一个短期解决方案,但不灵活,需要为任何新的评级方案提供一个新的中心,并且仍然需要这些卫星处于多活动状态,以保持源系统中当前的多个生效日期

我认为理想的解决方案需要至少多一个与驾驶钥匙相关的轮毂,并且可能需要第二个与房地产评级分配相关的轮毂。我读到的很多信息都表明我的卫星应该连接到一个中心,而不是一个链接

使用Data Vault方法对此进行建模的有效方法是什么


我有兴趣讨论所提出的解决方案的回报,例如,额外的弱集线器与在更复杂的查询中解决关键问题。

据我所知,这种情况更像是带有PropertyID的链接/SAT,RatingSchemeID作为链接到属性的链接自然键,RatingScheme HUB和RatingID在挂起链接的SAT中。

我同意RatingSchemeID需要放置在具有PropertyID的对象中。我不认为RatingID可以完全存在于卫星中,因为它本身指向一个评级中心,因此我们将打破一个规则,即卫星中除了它所连接的对象之外不应该有外键。但是,将其添加到链接中也会在full key.Understand中创建驱动关键点。在这种情况下,我们仍然存在链路/SAT情况,链路具有PropertyRatingIDSK和PropertyID、RatingSchemeID、RatingIDNK和标准LNKPluming。然后,SAT仅具有PropertyRatingID和标准SAT管道。在金宝的类比中考虑无事实的事实。你的建议与我目前正在构建的基本相同,但感觉这不是理想的方法。在这个链接中有一种类似于驱动键的关系,因为在任何时间点,对于任何给定的PropertyID和RatingSchemeID的组合,都只能有一个RatingID,但对于其中任何一个单独的组合,都只能有倍数。嗯。在这个层次上,理想是一个品味的问题。。。按照我的奥卡姆头脑敏锐的想法,LNK代表了系统已知的所有可能性,SAT代表了当前状态和每个状态的历史。模拟 对于任何精通DV的用户来说都是简单易懂的。凹坑/桥梁是一种工程化程度更高的结构,倾向于以更灵活的方式填补角落案例的空白和/或修补以前的错误。只有我的.02,但你在这里有你需要的东西,没有别的了!:'你犯过一次错误,你以为你错了