代理键是我们书中多年来一直存在的一种机制,我讨厌再次将其带入讨论。每个人都在谈论使用代理密钥而不是业务密钥的好处。甚至 Microsoft Analysis Services 表格模型和 Microsoft PowerBI 表格模型也在使用代理键。提到的两个平台都使您能够使用一列连接维度和事实,因此是代理键,因为在现实生活中很难拥有一个单一的业务键。
在最近几年担任 BI 架构师时,我曾与 Analysis Services Multidimensional 和 Tabular 合作,我在 Multidimensional 中有过项目,每晚在 DataWarehouse 中管理高达 500GB 的数据。我面临着从具有数百万条记录的表中的 5-6 个联合和 8-10 个连接收缩的事实。
问题来了,使用代理键,为了能够知道我们需要进行额外连接的维度键。因此,如果我们希望能够将 N 个维度(尚未与构造表达式中的事实相关联)与单个事实“关联”,我们需要在 DataWarehouse 中添加 N 个额外的连接。
让我们以前面的例子为例,所以对于这个特定的事实,我们需要 5-6 个联合 + (8-10 + N) 个连接,这增加了复杂性,一旦我们需要将这个事实与 10-15 联系起来会发生什么尺寸来获取代理键。
这些年来,我一直在尝试使用我早期的咖啡来阅读我的事实表达式,就像阅读报纸一样,删除未使用的列、联合、连接,并使一切都降低复杂性以节省 ETL 处理时间。
它完全理解我们将节省查询数据仓库和语义层的时间,但是 ETL 呢,我错过了什么?