SSAS 中的非日期角色扮演维度
Non-Date Roleplaying Dimensions in SSAS
我是 SSAS 的新手,正在设置概念验证。我喜欢角色扮演维度的想法,但我无法获得一种不基于日期的设置。这是用例:
在我们的 ERP 系统中,我们有一个事实 table 我们称之为 "Time Entries",它具有:
- User_ID
- Biller_ID
- Approver_ID
- 工作时间
- 等
我还有一个 "Resource" table,我将它们关联为外键:
- Resource_ID
- Department_Name
- 等
当我创建数据源视图时,我创建了以下关系:
- User_ID -> Resource_ID
- Biller_ID -> Resource_ID
- Approver_ID -> Resource_ID
我的"Resource"维度可以成功部署和处理,并具有以下属性:
- Resource_ID
- 部门名称
我的 "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 让我成功排除故障的是这个:
TL;DR -
- 我已经删除了数据库中 factable 和 dim table 之间的关系。
- 我刷新的dataSourceViews和thera没有关系tables
- 我删除了立方体设计中的维度
- 我重新创建立方体设计中的尺寸
- 然后我在 factable 中的外键和 dim tables
中的主键之间的 dataSourceViews 中建立关系
- 我重新处理了立方体
问题在于,因为我们在创建关系之前添加了维度,所以我们没有角色扮演维度。
我觉得我在这里遗漏了一些简单的东西,但我不太明白。谁能告诉我为什么我的角色扮演维度不起作用?
一个维度的角色扮演功能不依赖于它的类型。您的维度可用于日期维度等角色扮演场景
关于你的问题——SSAS 引擎有时可能会构建奇怪的查询来提取维度数据,尤其是当你的维度基于来自多个表的数据时。检查和调查:
- 修复错误消息中的
user_id
值
- 对相应的维度进行处理更新或处理完整,并从处理window表单中获取用于处理
user_id
属性的SQL查询。正在处理 user_id
属性日志条目。
- 复制 SQL 查询并 运行 它。检查它是否 returns id 来自上面的错误信息。
- 如果缺少值 - 调查查询
根据我的经验 - 当在具有某种关系的两个表上构建错误的维度时,就会发生这种情况。 SSAS 引擎已经构建了具有严格内连接的查询,并且它必须具有较少限制的左外连接。
您可以使用 SSDT 解决此问题,同时 DSV 属性为非空,但我发现直接在 DSV 中编写具有适当连接的 SQL 查询更简单。
我是 SSAS 的新手,正在设置概念验证。我喜欢角色扮演维度的想法,但我无法获得一种不基于日期的设置。这是用例:
在我们的 ERP 系统中,我们有一个事实 table 我们称之为 "Time Entries",它具有:
- User_ID
- Biller_ID
- Approver_ID
- 工作时间
- 等
我还有一个 "Resource" table,我将它们关联为外键:
- Resource_ID
- Department_Name
- 等
当我创建数据源视图时,我创建了以下关系:
- User_ID -> Resource_ID
- Biller_ID -> Resource_ID
- Approver_ID -> Resource_ID
我的"Resource"维度可以成功部署和处理,并具有以下属性:
- Resource_ID
- 部门名称
我的 "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 让我成功排除故障的是这个:
TL;DR -
- 我已经删除了数据库中 factable 和 dim table 之间的关系。
- 我刷新的dataSourceViews和thera没有关系tables
- 我删除了立方体设计中的维度
- 我重新创建立方体设计中的尺寸
- 然后我在 factable 中的外键和 dim tables 中的主键之间的 dataSourceViews 中建立关系
- 我重新处理了立方体
问题在于,因为我们在创建关系之前添加了维度,所以我们没有角色扮演维度。
我觉得我在这里遗漏了一些简单的东西,但我不太明白。谁能告诉我为什么我的角色扮演维度不起作用?
一个维度的角色扮演功能不依赖于它的类型。您的维度可用于日期维度等角色扮演场景
关于你的问题——SSAS 引擎有时可能会构建奇怪的查询来提取维度数据,尤其是当你的维度基于来自多个表的数据时。检查和调查:
- 修复错误消息中的
user_id
值 - 对相应的维度进行处理更新或处理完整,并从处理window表单中获取用于处理
user_id
属性的SQL查询。正在处理user_id
属性日志条目。 - 复制 SQL 查询并 运行 它。检查它是否 returns id 来自上面的错误信息。
- 如果缺少值 - 调查查询
根据我的经验 - 当在具有某种关系的两个表上构建错误的维度时,就会发生这种情况。 SSAS 引擎已经构建了具有严格内连接的查询,并且它必须具有较少限制的左外连接。
您可以使用 SSDT 解决此问题,同时 DSV 属性为非空,但我发现直接在 DSV 中编写具有适当连接的 SQL 查询更简单。