刷新数据时的 SSAS (2008R2) 和 Excel 过滤器问题

Posted

技术标签:

【中文标题】刷新数据时的 SSAS (2008R2) 和 Excel 过滤器问题【英文标题】:SSAS (2008R2) & Excel Filter Issue When Refreshing Data 【发布时间】:2014-01-08 14:58:13 【问题描述】:

我们有一个运行大约 6 个立方体的 2008 R2 实例。我发现的情况如下。

用户使用常规数据源方法通过 MS Excel 2010 连接到多维数据集。 假设他们创建了一个非常简单的数据透视表...行上的帐户和列上的月份,并带有一个度量,为我们提供了每个帐户的总值。在用户创建报告时,多维数据集中有 11 个月的可用数据(1 月 > 11 月),因此数据透视表在 Excel 中反映了这一点。用户在行上应用了一些过滤器(比如 5)来选择一些临时帐户。然后,用户将此文件保存到他的桌面并保留它,直到 12 月的数据在多维数据集中可用。 12 月即将来临,我们刷新了多维数据集,使其现在也包含 12 月的数据。用户重新打开 Excel 文件并右键单击数据透视表并刷新数据,期望看到所选五个帐户的完整年份数据,但事实并非如此。实际上发生的是,之前存在的所有数据都丢失了,数据透视表完全空白。任何人都可以帮助解释为什么会发生这种情况以及潜在的解决方案吗?

我有一个想法,Excel 正在存储使用某个唯一标识符过滤的帐户,并且当为新月份重新处理多维数据集时,新的唯一 ID 被分配给帐户,因此不会发生匹配。必须解决此问题,否则生成的每个报告实际上都是一次性工作。干杯!

【问题讨论】:

为什么账户没有稳定密钥?我认为最好的解决方案是更改您的 ETL 流程,以便帐户的密钥随着时间的推移保持稳定。 您可以下载 OLAP PivotTable extensions 并使用它来查看 Excel 为填充数据透视表而编写的 MDX。如果您在更改帐户密钥时遇到问题,您应该能够查看查询中是否正在使用该属性。 【参考方案1】:

在我的情况下,这确实是由糟糕的多维数据集设计造成的:生成的 MDX 引用了一个在每次重建多维数据集时都会更改的 ID:

WHERE [Log Author].[PM PRIMARYKEY].&[29872574],

我同意解决此问题的最佳方法是更改​​ ETL。

PS 我查看生成的 MDX 的方式(感谢 Marco Russo)是选择枢轴然后运行这个宏(打开 VBA,粘贴它,按 F5):

Sub DisplayMDX()
    Dim mdxQuery As String
    Dim pvt As PivotTable
    Dim ws As Worksheet

    Set pvt = ActiveCell.PivotTable
    mdxQuery = pvt.MDX

    ' Add a new worksheet.
    Set ws = Worksheets.Add
    ws.Range("A1") = mdxQuery
End Sub

【讨论】:

以上是关于刷新数据时的 SSAS (2008R2) 和 Excel 过滤器问题的主要内容,如果未能解决你的问题,请参考以下文章

逆向工程多维数据集以使用 SSAS 2008 构建关系数据库

从 SSAS 网关刷新时出现“EffectiveUserName' XML for Analysis 属性无效”错误

SSAS(分析服务)优化手册

SSAS 维度属性在多维数据集浏览器 (BIDS) 中不可见

SSAS parent/child dimension

在反应中丢失页面刷新时的组件数据