SSAS DSV中命名查询外键关系不显示及命名查询适用性疑问
问题1:关联显示差异的原因
SSAS DSV的表间关联是独立存储在DSV元数据中的,不是实时读取数据库外键生成的,你的场景出现差异的逻辑如下:
- 你首次将
FactSales、FactInvoices和原始数据库表DimDate添加到DSV时,DSV会自动读取数据库层的外键约束,生成对应的关联关系并固化保存在DSV文件里 - 后续你将
DimDate转换为命名查询的操作,只会修改DSV中DimDate对象的数据源逻辑,不会删除已经存在的关联元数据,所以原来两个事实表的关联线会正常保留 - 新增
FactExpenses时,你DSV中的DimDate已经是自定义命名查询,不属于可匹配数据库外键的原始表对象,DSV无法自动匹配到数据库层的外键约束,因此不会自动生成关联线,你手动拖拽两个表的Datekey字段即可手动建立关联。
问题2:限定维度加载范围的方案选择
用命名查询限定DimDate的范围是完全可行的常规方案,优势是改造成本低、不需要修改ETL逻辑或SSAS处理配置,适合快速调整维度范围的场景。但使用时需要注意两个注意事项:
- 命名查询不会自动同步数据库端
DimDate的结构变更,如果后续数据库的DimDate新增了字段,你需要手动修改命名查询的SQL语句补充对应字段 - 要确保所有事实表中使用的
Datekey都落在你限定的2021年范围内,否则处理模型时会出现维度键不匹配的错误。
如果需要更可控的维度范围管理,也可以选择在ETL层直接生成过滤后的DimDate物理表,或者在SSAS维度的处理配置中添加查询过滤条件,可根据你的项目实际架构选择即可。
内容的提问来源于stack exchange,提问作者fdkgfosfskjdlsjdlkfsf
相关产品推荐
相关产品推荐

