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

Non-Date Roleplaying Dimensions in SSAS

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

在我们的 ERP 系统中,我们有一个事实 table 我们称之为 "Time Entries",它具有:

我还有一个 "Resource" table,我将它们关联为外键:

当我创建数据源视图时,我创建了以下关系:

我的"Resource"维度可以成功部署和处理,并具有以下属性:

我的 "Work Entries" 立方体有一个度量,"Hours Worked"。当我添加 "Resources" 维度时,它会创建三个角色扮演维度:

当我去处理时,我收到以下错误:

Errors in the OLAP Storage Engine: The attribute key cannot be found when processing: Table: 'Time Entries', Column: 'user_id', Value: 'some number', The Attribute is 'Resource ID'.

到目前为止,我所关注的唯一 post 让我成功排除故障的是这个:

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 -

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

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

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

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

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