Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 上次处理时获取SSAS多维数据集_Sql_Excel_Vba_Ssas_Olap Cube - Fatal编程技术网

Sql 上次处理时获取SSAS多维数据集

Sql 上次处理时获取SSAS多维数据集,sql,excel,vba,ssas,olap-cube,Sql,Excel,Vba,Ssas,Olap Cube,在Excel中,我将Analysis Services连接到数据立方体。我希望能够通过向用户显示上次多维数据集处理时间来向用户显示数据的最新状态。在SQLServerManagementStudio(SSMS)中建立到多维数据集的analysis services连接后,我可以右键单击多维数据集并查看存在的上一个多维数据集处理时间的属性。我还可以创建一个MDX查询,如下所示,以返回最后一个进程时间: SELECT LAST_DATA_UPDATE FROM $system.mdschema_cu

在Excel中,我将Analysis Services连接到数据立方体。我希望能够通过向用户显示上次多维数据集处理时间来向用户显示数据的最新状态。在SQLServerManagementStudio(SSMS)中建立到多维数据集的analysis services连接后,我可以右键单击多维数据集并查看存在的上一个多维数据集处理时间的属性。我还可以创建一个MDX查询,如下所示,以返回最后一个进程时间:

SELECT LAST_DATA_UPDATE FROM $system.mdschema_cubes

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

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

Select CURRENT_TIMESTAMP as CubeLastRefreshed
我让它成为一个与任何事物都无关的维度。然后用户可以将其拉入Excel。你可以制作一个数据透视表。也可以在Excel中编写多维数据集函数,将其显示在报表底部。看起来像

=cubemember("Cube","[Cube Process Date].[Cube Last Processed].firstchild")
只需确保注意处理此维度的时间。如果您仅在特定日期处理某些维度或度量值,请确保此维度的处理包含在正确的位置。

您可以使用。您必须部署可以下载到服务器上的程序集,然后使用上述页面底部查询的子句定义类似于
中描述的度量


存储过程的所有源代码也可以从CodePlex获得

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

SELECT LAST_DATA_UPDATE FROM $system.mdschema_cubes

然后将其导出到数据透视表。我不需要修改Excel以外的任何内容。以下是一个逐步过程的示例。

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

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

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

我认为这确实有效,但它要求最终用户启用Power Pivot。如果它们位于不同版本的Excel上,则需要您维护单独的工作簿(一个用于Excel 2010,一个用于Excel 2013)。听起来用户是直接连接到Excel中的SSA,而不是通过Power Pivot,因此这也会更改/添加到工作簿的另一个连接。这一切可能都很好,但我想指出这一点。是的,谢谢你,这些观点对这个问题的未来读者来说肯定也很重要。无论如何,我只支持Excel 2013,要求用户启用power pivot也没什么大不了的。拥有另一个连接也不是问题。这对我来说是最好的解决方案,因为我想避免改变多维数据集中的任何内容。你的答案也很好。这对那些在立方体方面不是超级精明的人来说真的很有帮助。谢谢。正如您提到的,这将显示Excel从多维数据集获取数据的时间。但我特别需要处理多维数据集的时间。