OLAP存储引擎报错:处理时找不到属性键
Errors in the OLAP storage engine: The attribute key cannot be found when processing
我知道这主要是设计问题。我读过有一个通过在处理时自定义错误来解决此问题的解决方法,但我不高兴必须忽略错误,而且多维数据集进程已安排,因此忽略错误至少不是一个好的选择。
这是引发错误的多维数据集的一部分。
DimTime
- PK(整数)
- MyMonth(整数,示例 = 201501、201502、201503 等)
- 其他专栏
事实预算
- PK(整数)
- 月份(整数,示例 = 201501、201502、201503 等)
- 另一列...
DSV中的关系设置如下。
DimTiempo = DimTime,FactPresupuesto=FactBudget,periodo = MyMonth,PeriodoPresupFK = Month
只是为了理解而翻译。
cube中的关系如下:
立方体构建没有问题,处理时报错:处理时找不到属性键。
它被抛出是因为 FactBudget 有一些 Month 值(例如 201510、201511、201512)而 DimTime 没有,所以完整性被破坏了。
如答案here中所述,这可以在 ETL 过程中解决。如果一个事实 table 具有未插入维度的外键,我想我无法做任何事情来获得关系。
注意 MyMonth 可以是值 201501、201502、201503 等。这是为连接年和月而设置的,DimTime 是增量插入的,每天都计算该列,因此此时 DimTime 没有 201507 以后的值.
是否有处理这种关系的解决方法或模式?
感谢您考虑我的问题。
您增量填充 DimTime 是否有原因? It certainly isn't the standard way to do it。您需要在事实中使用的值已经存在于维度中。我会简单地为 DimTime 编写一整套数据并停止它的增量更新。
我认为您遵循的流程不正确:您应该通过 degenerate/fact 维度方法设置任何与时间相关的维度。也就是说,时间维度实际上并不是真正的维度 - 相反,它是通过包含时间的事实 table 本身填充的。如果你查找退化维度,你就会明白我的意思。
我 运行 在尝试在 Halo BI 中处理多维数据集时遇到了这个问题。 SQL 服务器似乎支持某些 "datetime" 样式 "are",但 Halo BI 不支持。此语句不会导致错误:
CAST(CONVERT(char(11),table.[col name],113) AS datetime) AS [col name]
然而,这不会在没有错误的情况下处理:
CAST(CONVERT(char(16),table.[col name],120) AS datetime) AS [col name]
然而,这两者都适用于 SQL Server Management Studio 2012。
导致此错误的另一个原因是立方体度量未正确映射到事实 table。
我知道这主要是设计问题。我读过有一个通过在处理时自定义错误来解决此问题的解决方法,但我不高兴必须忽略错误,而且多维数据集进程已安排,因此忽略错误至少不是一个好的选择。
这是引发错误的多维数据集的一部分。
DimTime
- PK(整数)
- MyMonth(整数,示例 = 201501、201502、201503 等)
- 其他专栏
事实预算
- PK(整数)
- 月份(整数,示例 = 201501、201502、201503 等)
- 另一列...
DSV中的关系设置如下。
DimTiempo = DimTime,FactPresupuesto=FactBudget,periodo = MyMonth,PeriodoPresupFK = Month
只是为了理解而翻译。
cube中的关系如下:
立方体构建没有问题,处理时报错:处理时找不到属性键。
它被抛出是因为 FactBudget 有一些 Month 值(例如 201510、201511、201512)而 DimTime 没有,所以完整性被破坏了。
如答案here中所述,这可以在 ETL 过程中解决。如果一个事实 table 具有未插入维度的外键,我想我无法做任何事情来获得关系。
注意 MyMonth 可以是值 201501、201502、201503 等。这是为连接年和月而设置的,DimTime 是增量插入的,每天都计算该列,因此此时 DimTime 没有 201507 以后的值.
是否有处理这种关系的解决方法或模式?
感谢您考虑我的问题。
您增量填充 DimTime 是否有原因? It certainly isn't the standard way to do it。您需要在事实中使用的值已经存在于维度中。我会简单地为 DimTime 编写一整套数据并停止它的增量更新。
我认为您遵循的流程不正确:您应该通过 degenerate/fact 维度方法设置任何与时间相关的维度。也就是说,时间维度实际上并不是真正的维度 - 相反,它是通过包含时间的事实 table 本身填充的。如果你查找退化维度,你就会明白我的意思。
我 运行 在尝试在 Halo BI 中处理多维数据集时遇到了这个问题。 SQL 服务器似乎支持某些 "datetime" 样式 "are",但 Halo BI 不支持。此语句不会导致错误:
CAST(CONVERT(char(11),table.[col name],113) AS datetime) AS [col name]
然而,这不会在没有错误的情况下处理:
CAST(CONVERT(char(16),table.[col name],120) AS datetime) AS [col name]
然而,这两者都适用于 SQL Server Management Studio 2012。
导致此错误的另一个原因是立方体度量未正确映射到事实 table。