通过MDX生成数据透视表

目标是将Excel单元链接到SQL Analysis Server 2008。

用户不想使用Excel数据透视表连接到多维数据集,因为他们需要对数据进行计算。 这会导致大量的问题,当扩展和折叠数据透视表层次结构时,主要被引用的单元格会变成#Ref's 。 我向他们展示了如何closures+/-,使其只能读取,但并不理想。

其次,我们不喜欢数据透视表生成工具,我们都更喜欢SQL 2005,2008中的多维数据集浏览器在OWC中制作的sql2012中 折旧,这也是在Excel 2007以后的版本 。

所以我有一点腌制。 我一直在研究一堆生成MDX的工具。 一些杰出的是Mosha Pasumansky的真棒MDX工作室和http://silverlight.galantis.com的Ranet Olap库组件

我现在想要实现的是用MDX设置Excel单元格。 就是这样:

  1. Excel>数据选项卡>连接>连接到多维数据集
  2. 数据透视表,使用现有的连接
  3. 将数据添加到数据透视表
  4. 双击数据透视表中的一个值来向下钻取,将会用数据的二维表示创build一个新的表格。
  5. “数据”选项卡>“连接”>select由深度钻取创build的连接。
  6. 单击属性>定义,然后在命令文本字段>确定中粘贴一个MDX查询

这使用多维数据集数据填充单元格,但它只有一行,我无法弄清楚如何使它成为多行和分层结构,查看对话框后面它的唯一一行数据:

在这里输入图像说明

在生成MDX查询的工具中,它是多行的:

在这里输入图像说明

我知道这是一个很长的尝试,我很怀疑它的可能性,但我已经没有想法了。

我尝试了PowerPivot工具,它很糟糕,它的多维数据集浏览器不能像SQL多维数据集浏览器那样工作,只能添加列! 它就像一个倒退到标准数据透视表。

所以在这一点上,我试图在Excel中build立一个漂亮的数据透视表“浏览器” – 它似乎没有任何市场上的东西? 这就是为什么我诉诸第三方工具来获得MDX和插入到Excel(通过编程方式通过VSTO)。

另外一件事,我没有运气,但我想我会提到显示Excel 2007数据透视表的MDX查询 :

 Private Sub Workbook_Open() Dim ptcon As CommandBar 'See the following for list of menus in excel 'http://support.microsoft.com/support/kb/articles/Q213/5/52.ASP 'Title: XL2000: List of ID Numbers for Built-In CommandBar Controls Set ptcon = Application.CommandBars("PivotTable context menu") insertDisplayMDX: Dim cmdMdx As CommandBarControl For Each btn In ptcon.Controls If btn.Caption = "MDX Query" Then GoTo doneDisplayMDX Next btn ' Add an item to the PivotTable context menu. Set cmdMdx = ptcon.Controls.Add(Type:=msoControlButton, temporary:=True) ' Set the properties of the menu item. cmdMdx.Caption = "MDX Query" cmdMdx.OnAction = "DisplayMDX" doneDisplayMDX: End Sub 'And this is the DisplayMDX subroutine, that you can insert in a separate module. 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 

不幸的是,pvt.MDX属性是ReadOnly!

如果你到这里感谢阅读,任何想法的最欢迎:)

你可以build立一个Excel插件(见这篇文章 )。

这个插件可能基于ADOMD.NET来连接一个多维数据集,并用你自己的MDX查询来查询它。

给定一个CellSet ,您将能够提取给定的单元格,并将其插入Excel表格中的任何需要的地方。

Ranet PivotGrid可以在分层结构中显示非分组数据( 成员组模式 )MDX查询结果可以导出到Excel。 但是,它不会与数据公式相关联。 处理Mdx查询并生成Excel文件可能在代码中。