【问题标题】:Errors in the OLAP storage engine: The attribute key cannot be found when processingOLAP存储引擎报错:处理时找不到attribute key
【发布时间】:2015-06-12 22:09:11
【问题描述】:

我知道这主要是一个设计问题。我已经读到通过在处理时自定义错误来解决此问题,但我不高兴不得不忽略错误,而且多维数据集进程已安排好,因此忽略错误不是一个选择,至少是一个好的选择。

这是引发错误的立方体的一部分。

昏暗时间

  • PK(整数)
  • MyMonth(整数,示例 = 201501、201502、201503 等)
  • 其他栏目

事实预算

  • PK(整数)
  • 月份(整数,示例 = 201501、201502、201503 等)
  • 另一列...

DSV中的关系设置如下。

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

cube中的关系如下:

立方体构建没有问题,处理错误时:处理时找不到属性键被抛出。

由于 FactBudget 具有 DimTime 没有的某些 Month 值(例如 201510、201511、201512)而被抛出,因此完整性被破坏。

正如答案here 中提到的,这可以在 ETL 过程中解决。如果一个事实表具有未插入维度的外键,我认为我无能为力。

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

是否有处理这种关系的解决方法或模式?

感谢您考虑我的问题。

【问题讨论】:

    标签: ssas foreign-key-relationship data-warehouse olap-cube dimensional-modeling


    【解决方案1】:

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

    【讨论】:

    • 感谢您的建议。我认为这非常适合交易数据。这个场景涉及到固定数据,一年一月一月的预算销售。我会记住你的建议。
    【解决方案2】:

    您是否有理由逐步填充 DimTime? It certainly isn't the standard way to do it。您需要您在事实中使用的值已经存在于维度中。我会简单地为 DimTime 编写完整的数据集并停止它的增量更新。

    【讨论】:

    • 感谢您的建议,并为我展示了未知的模式,我会记住的。作为快速解决方法,我正在考虑在我不想影响其他使用 DimTime 的事实时,逐步填充 Fact 以匹配 DimTime。
    【解决方案3】:

    我在 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]
    

    但是,这两种方法都可以在 SQL Server Management Studio 2012 中使用。

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

    【讨论】:

      猜你喜欢
      • 2013-05-10
      • 1970-01-01
      • 2013-04-24
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 2023-02-21
      • 1970-01-01
      • 2023-03-03
      相关资源
      最近更新 更多