Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssas OLAP存储引擎中的错误:处理时找不到属性键_Ssas_Foreign Key Relationship_Data Warehouse_Olap Cube_Dimensional Modeling - Fatal编程技术网

Ssas OLAP存储引擎中的错误:处理时找不到属性键

Ssas OLAP存储引擎中的错误:处理时找不到属性键,ssas,foreign-key-relationship,data-warehouse,olap-cube,dimensional-modeling,Ssas,Foreign Key Relationship,Data Warehouse,Olap Cube,Dimensional Modeling,我知道这主要是一个设计问题。我已经读到,通过在处理时自定义错误,可以解决这个问题,但我不愿意忽略错误,而且多维数据集进程是计划好的,所以忽略错误不是一个选择,至少是一个好的选择 这是抛出错误的多维数据集的一部分 DimTime PK(int) MyMonth(整数,示例=201501、201502、201503等) 另一栏 FactBudget PK(int) 月份(整数,示例=201501、201502、201503等) 另一个专栏 DSV中的关系设置如下 DimTiempo=DimT

我知道这主要是一个设计问题。我已经读到,通过在处理时自定义错误,可以解决这个问题,但我不愿意忽略错误,而且多维数据集进程是计划好的,所以忽略错误不是一个选择,至少是一个好的选择

这是抛出错误的多维数据集的一部分

DimTime

  • PK(int)
  • MyMonth(整数,示例=201501、201502、201503等)
  • 另一栏
FactBudget

  • PK(int)
  • 月份(整数,示例=201501、201502、201503等)
  • 另一个专栏
DSV中的关系设置如下

DimTiempo=DimTime,FACTPRESPUESTO=FactBudget,periodo=MyMonth,PeriodoPresupFK=Month 只是为了理解而翻译。

多维数据集中的关系如下所示:

在处理错误时,创建多维数据集没有问题:在抛出处理时找不到属性键

由于FactBudget有一些DimTime没有的月份值(例如201510201511201512),所以抛出了它,因此完整性被破坏

如回答中所述,这可以在ETL过程中解决。我认为,如果一个事实表中有外键没有插入到维度中,我就无法获得关系

注:MyMonth可以是值201501、201502、201503等。这是为连接的年份和月份设置的,DimTime是增量插入的,并且每天都计算该列,因此在这一时刻DimTime没有201507以后的值

是否有一种变通方法或模式来处理这种关系


谢谢你考虑我的问题。

你为什么要递增地填充DimTime。您需要在事实中使用的值已经存在于维度中。我只需要为DimTime编写一整套数据并停止增量更新。

我认为您遵循的过程是不正确的:您应该通过退化/事实维度方法设置任何与时间相关的维度。也就是说,时间维度不是真正的维度,而是通过包含时间的事实表本身填充的。如果你查退化维度,你就会明白我的意思

我在Halo BI中处理立方体时遇到了这个问题。似乎有些“日期时间”样式“受SQL Server支持,但不受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]
但是,这并不是没有错误的过程:

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]
但是,这两种方法都可以在SQLServerManagementStudio 2012中使用


此错误的另一个原因是多维数据集度量值未正确映射到事实表。

感谢您的建议,并为我显示未知模式,我会记住这一点。作为快速解决方法,我正在考虑以增量方式填充事实以匹配DimTime,因为我不想影响使用DimTime的其他事实。谢谢您的建议。我认为这非常适合事务数据。此场景涉及固定数据,即一年每月的预算销售。我会记住你的小费。