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

时间:2019-01-07 20:56:52

标签: ssas dimension

我是SSAS的新手,正在建立概念证明。我喜欢“角色扮演”维度的想法,但是我无法获得一种不基于日期的设置。这是用例:

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

  • User_ID
  • Biller_ID
  • 批准人ID
  • 工作时间
  • ETC

我还有一个“资源”表,我将这些表与外键相关:

  • 资源ID
  • 部门名称
  • ETC

创建数据源视图时,我会在以下两者之间建立关系:

  • 用户ID->资源ID
  • Biller_ID-> Resource_ID
  • 批准者ID->资源ID

我的“资源”维度可以成功部署和处理,并且具有以下属性:

  • 资源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-

  • 我已删除数据库中事实表与暗表之间的关系。
  • 我刷新dataSourceViews,并且thera与表之间没有关系
  • 我删除了多维数据集设计中的尺寸
  • 我在多维数据集设计中重新创建尺寸
  • 然后我在数据源视图中构建事实中的外键与暗表中的主键之间的关系
  • 我收回了立方体

问题在于,因为在创建关系之前已将维度添加回去,所以我们没有角色扮演维度。

我觉得这里缺少一些简单的东西,但是我不太清楚。谁能告诉我为什么我的角色扮演维度不起作用?

1 个答案:

答案 0 :(得分:0)

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

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

以我的经验-当在具有某种关系的两个表上建立错误的维度时,就会发生这种情况。 SSAS引擎已建立具有严格内部联接的查询,并且必须限制较少的外部联接。
您可以通过在SSDT上播放DSV属性为非空值来解决此问题,但我发现直接在DSV中编写具有正确联接的SQL查询更为简单。