今天早上我们的立方体有一个非常奇怪的问题,我们在Excel中刷新的数据透视表为我们的一些测量值产生了空值。在SSMS中运行的相同MDX查询也产生了相同的结果,因此它不是Excel问题。
我们发现,如果我们过滤成员列表(在表格的标题上,而不是在过滤器列表中),它会带回那些成员,但没有数据在计量中(除了一个计算的度量)它会)。如果我们删除了该过滤器并使用了All
成员,那么这些成员将拥有数据。我们可以获得数据的另一种方式是包含Unknown成员,或从pivot中删除另一个维度属性。这完全没有意义。
甚至更奇怪的是,这只是特定的日子。昨天例如有这种效果,但前一天没有,那就是前一天。所有这些数据都存在于同一个分区中,因此不存在分区问题。
我们最终通过运行以下内容来清除缓存,从而修复了问题。
<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
<Object>
<DatabaseID>Data Warehouse</DatabaseID>
<CubeID>Retail</CubeID>
</Object>
</ClearCache>
我不知道为什么清除缓存修复了我们的问题。我对缓存知之甚少,但为什么清除它会解决我们的问题呢?我们现在担心的是,数据可能不正确或在某些情况下根本不显示,并且不想每天都不得不停止信任缓存并刷新它。
另一件事是我运行查询时的探查器并没有显示有关命中缓存的任何信息。我只看到它正在运行REFRESH CUBE [Retail]
。