SSAS中的非日期角色扮演维度

问题描述 投票:0回答:1

我是SSAS的新手,正在建立一个概念验证。我喜欢角色扮演维度的想法,但我很难得到一个不基于日期的设置。这是用例:

在我们的ERP系统中,我们有一个事实表,我们称之为“时间条目”,它具有:

  • 用户身份
  • 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表之间的关系。
  • 我刷新了dataSource Views,表之间没有关系
  • 我删除了立方体设计中的尺寸
  • 我在立方体设计中重新创建了尺寸
  • 我在dataSourceViews中构建了factable中的外键和dim表中的主键之间的关系
  • 我重新开始了立方体

这个问题是因为我们在创建关系之前已经添加了维度,所以我们没有角色扮演维度。

我觉得我在这里缺少一些简单的东西,但我无法弄明白。谁能告诉我为什么我的角色扮演维度不起作用?

ssas dimension
1个回答
0
投票

维度的角色扮演功能不依赖于其类型。您的维度可用于角色扮演场景,如日期维度。 在您的问题上 - SSAS引擎可能会构建有时提取维度数据的奇怪查询,尤其是当您的维度基于来自多个表的数据时。要检查和调查它:

  • 修复错误消息中的user_id
  • 在相应的维度上进行处理更新或处理完全,并从处理窗口表单获取用于处理user_id属性的SQL查询。它正在处理user_id属性日志条目。
  • 复制SQL查询并运行它。检查它是否从上面的错误消息中返回id。
  • 如果缺少值 - 请调查查询

根据我的经验 - 当错误的维度建立在具有某种关系的两个表格上时,就会发生这样的事情。 SSAS引擎构建了具有严格内连接的查询,并且必须限制较少的左外连接。 您可以使用SSDT播放DSV属性非空来修复它,但我发现在DSV中直接编写带有适当连接的SQL查询更简单。

© www.soinside.com 2019 - 2024. All rights reserved.