在Datawarehouse中处理null

在Datawarehouse中处理null,第1张

在Datawarehouse中处理null

如前一个答案所述,维度的Null值可能具有许多不同的含义,未知,不适用,未知等。如果能够在应用程序中区分它们,添加“伪”维度条目会有所帮助,这很有用。

无论如何,我都避免使用Null事实外键或维度字段,即使只有一个“未知”维度值也将帮助您的用户定义查询,其中包括数据质量不是100%的包罗万象的分组(而且永远不会)。

我一直在使用的一个非常简单的技巧,至今尚未咬住我,是在T-sql中使用int
IDENTITY(1,1)定义我的尺寸替代键(从1开始,每行递增1)。伪键(“不可用”,“未分配”,“不适用”)被定义为负整数,并由在ETL过程开始时运行的存储过程填充。

例如,创建为的表

    CREATE TABLE [dbo].[Location]    (        [LocationSK] [int] IDENTITY(1,1) NOT NULL,        [Name] [varchar](50) NOT NULL,        [Abbreviation] [varchar](4) NOT NULL,        [LocationBK] [int] NOT NULL,        [EffectiveFromDate] [datetime] NOT NULL,        [EffectiveToDate] [datetime] NULL,        [Type1Checksum] [int] NOT NULL,        [Type2Checksum] [int] NOT NULL,    ) ON [PRIMARY]

和存储过程填充表

Insert Into dbo.Location (LocationSK, Name, Abbreviation, LocationBK, EffectiveFromDate,  Type1Checksum, Type2Checksum) Values (-1, 'Unknown location', 'Unk', -1, '1900-01-01', 0,0)

我已经制定了一个规则,即每个维度至少要有一个这样的伪行,以用于维度查找失败的情况,并建立异常报告以跟踪分配给此类行的事实数量。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5675333.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存