3

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

SELECT LAST_DATA_UPDATE FROM $system.mdschema_cubes

我希望能够在 Excel 中检索相同的信息,无论是通过 VBA 还是其他方法,只要它可以在 Excel 中完成而不需要一些外部工具。

4

4 回答 4

6

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

SELECT LAST_DATA_UPDATE FROM $system.mdschema_cubes

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

于 2013-11-16T01:01:03.950 回答
4

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

Select CURRENT_TIMESTAMP as CubeLastRefreshed

我把它变成了一个与任何事物无关的维度。然后用户可以将其拉入 Excel。您可以在其中制作一个数据透视表。或者您可以在 Excel 中编写一个多维数据集函数以将其显示在报表底部。它看起来像

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

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

于 2013-11-13T23:54:42.647 回答
0

您可以使用Codeplex 上的 AS StoredProcedures 项目中的 CubeInfo 过程。您必须将可以从那里下载的程序集部署到您的服务器,然后定义类似于WITH上述引用页面底部的查询条款中描述的度量。

CodePlex 也提供存储过程的所有源代码。

于 2013-11-14T08:15:19.470 回答
-2

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

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

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

于 2013-11-21T04:02:03.457 回答