SSAS 中的非日期角色扮演维度
Posted
技术标签:
【中文标题】SSAS 中的非日期角色扮演维度【英文标题】:Non-Date Roleplaying Dimensions in SSAS 【发布时间】:2019-01-07 20:56:51 【问题描述】:我是 SSAS 新手,正在建立概念验证。我喜欢角色扮演维度的想法,但我无法获得一种不基于日期的设置。这是用例:
在我们的 ERP 系统中,我们有一个称为“时间条目”的事实表,其中包含:
用户 ID Biller_ID Approver_ID 工作时间 等我还有一个“资源”表,我将这些表作为外键关联起来:
Resource_ID 部门名称 等当我创建我的数据源视图时,我创建了以下关系:
User_ID -> Resource_ID Biller_ID -> Resource_ID Approver_ID -> Resource_ID我的“资源”维度可以成功部署和处理,具有以下属性:
Resource_ID 部门名称我的“工作条目”多维数据集有一个度量,“工作时间”。当我添加“资源”维度时,它会创建三个角色扮演维度:
用户 审批人资源 帐单资源当我去处理时,我收到以下错误:
OLAP 存储引擎中的错误:处理时找不到属性键:表:'时间条目',列:'user_id',值:'某个数字',属性是'资源 ID'。
到目前为止,我关注的唯一一个让我成功排除故障的帖子是这个:
https://www.sqlservercentral.com/Forums/1219713/Errors-in-the-OLAP-storage-engine-The-attribute-key-cannot-be-found-when-processing-Even-though-key-Exist-in-Dim-Table
TL;DR -
我已经删除了数据库中的 factable 和 dim 表之间的关系。 我刷新了dataSourceViews,表之间没有关系 我删除了立方体设计中的尺寸 我在立方体设计中重新创建了尺寸 然后我在 dataSourceViews 中建立事实表中的外键和暗表中的主键之间的关系 我重新处理了立方体这样做的问题是,因为我们在创建关系之前添加了维度,所以我们没有角色扮演维度。
我觉得我在这里遗漏了一些简单的东西,但我无法弄清楚。谁能告诉我为什么我的角色扮演维度不起作用?
【问题讨论】:
【参考方案1】:维度的角色扮演功能不依赖于其类型。您的维度可用于角色扮演场景,如日期维度。 关于您的问题 - SSAS 引擎有时可能会构建提取维度数据的奇怪查询,尤其是当您的维度基于多个表中的数据时。要检查和调查它:
修复错误消息中的user_id
值
对相应维度进行处理更新或处理满,并从处理窗口窗体中获取用于处理user_id
属性的SQL查询。正在处理user_id
属性日志条目。
复制 SQL 查询并运行它。检查它是否从上面的错误信息中返回 id。
如果缺少值 - 调查查询
根据我的经验,当在两个具有某种关系的表上构建错误的维度时,就会发生这种情况。 SSAS 引擎已经构建了具有严格内连接的查询,并且它必须具有较少限制的左外连接。 您可以使用 SSDT 来修复它,其中 DSV 属性为非空,但我发现直接在 DSV 中编写具有正确连接的 SQL 查询更简单。
【讨论】:
以上是关于SSAS 中的非日期角色扮演维度的主要内容,如果未能解决你的问题,请参考以下文章