有人能为我遇到的情况分享一个最佳实践吗?
我使用SSIS将大约20个固定宽度的文本文件映射到相应的暂存表。数据按预期流入这些表。这些固定宽度的文本文件很大(例如:1500字节(,具有不同的子记录类型和数千条记录。下一步是我将数据从暂存转换到它们的目标表中。
这些固定宽度文本文件中有许多字段具有与状态、产品等相对应的缩写代码(例如:A-apple、B-Banana、C-Cherry等(。固定宽度文本文档映射指南中有参考表和附录,用于解码缩写。有时,指南中列出的一个字段可能只有三到四个缩写。有时,一个字段可能有一个附录,列出了100多种可能的选择和缩写。
简而言之,我是否还需要为staging中列出的每个字段创建维度表来解码这些缩写?或者,当选项有限时,我应该在SQL中对其中的一些字段进行硬编码吗
CASE WHEN 'A' THEN 'Apple' WHEN 'B' THEN 'Banana' WHEN 'C' THEN 'Cherry' END AS fruit
我的直觉是保持一致,并为所有这些项目创建一个维度表,但这可能意味着创建数百个表,这些表可能只在准备过程中使用。
什么在这里最有效?感谢您的帮助。非常感谢。
如果维度中只有Code/Value,那么我会考虑使用一个查找表。
create table dimLookup(
lookUpKey int identity primary key
,lookUpType varchar(255) -- this names what you are looking up. can be reused or specific
,lookupCode varchar(100) -- this is what is being mapped
,lookupValue varchar(255) -- this is the underlying value
)
注:
- 请确保在lookupType上放置索引
- 此外,lookupType和LookupCode的组合应该是唯一的
- LookupType可以与表名同义