获取SSAS多维数据集的最后处理时间

时间:2013-11-12 23:32:27

标签: sql excel vba ssas olap-cube

在Excel中,我建立了与数据立方体的Analysis Services连接。我希望能够通过在最后一个多维数据集处理时间发生时显示数据来向用户显示数据的当前状态。在SQL Server Management Studio(SSMS)中建立与多维数据集的分析服务连接,我可以右键单击多维数据集并查看最后一个多维数据集处理时间的属性。我还可以按如下方式创建MDX查询以返回上一个处理时间:

SELECT LAST_DATA_UPDATE FROM $system.mdschema_cubes

我希望能够在Excel中检索相同的信息,无论是通过VBA还是其他方法,只要可以在没有外部工具的情况下在Excel中完成。

4 个答案:

答案 0 :(得分:5)

我实际上找到了一种在Excel中执行此操作的方法,而无需创建任何视图或新措施。在Excel 2013中, PowerPivot 允许您针对多维数据集创建自己的自定义MDX查询。您可以打开PowerPivot,建立与多维数据集的连接,粘贴我在SSMS中使用的MDX查询以返回多维数据集处理时间,

SELECT LAST_DATA_UPDATE FROM $system.mdschema_cubes

然后将其导出到数据透视表。我不需要修改Excel之外的任何内容。这是一个document一步一步的程序。

答案 1 :(得分:4)

我对项目有同样的需求,在Excel中显示多维数据集上次处理的日期/时间。这可能是一个小小的菜鸟,但它绝对有效。我在我的DSV中添加了一个针对我的数据库的查询(技术上我创建了一个视图,因为我的所有源数据来自视图而不是命名查询或表),这只是

Select CURRENT_TIMESTAMP as CubeLastRefreshed

我把它作为一个与任何事物无关的维度。然后用户可以将其拉入Excel。您可以在其中创建一个数据透视表。或者,您可以在Excel中编写一个立方体函数,以在报告的底部显示它。它看起来像

=cubemember("Cube","[Cube Process Date].[Cube Last Processed].firstchild")

请务必注意何时处理此维度。如果您仅在特定日期处理某些维度或度量,请确保处理此维度包含在正确的位置。

答案 2 :(得分:0)

您可以使用CubeInfo procedures from the AS StoredProcedures project on Codeplex。您必须将可以下载的程序集部署到服务器,然后定义类似于上述引用页面底部查询的WITH子句中所述的措施。

存储过程的所有源代码也可在CodePlex中获得。

答案 3 :(得分:-2)

每当任何数据透视表(包括从SSAS填充的数据透视表)更新时,我都会使用以下VBA将当前日期时间放入电子表格的单元格中:

Private Sub Workbook_SheetPivotTableUpdate(ByVal Sh As Object, ByVal Target As PivotTable)
Range("Documentation!B3").Value = Now()
End Sub

这会捕获电子表格从多维数据集中提取数据的时间,而不是处理多维数据集的时间,但可能对您有所帮助。