【问题标题】:Generate Pivot Tables via MDX通过 MDX 生成数据透视表
【发布时间】:2012-06-19 05:25:35
【问题描述】:

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

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

其次我们不喜欢数据透视表生成工具,我们都更喜欢 SQL 2005、2008 中的 Cube Browser 使用 OWC 制作的 depreciated in sql2012 也是 depriciated in Excel 2007 onwards

所以我有点吃不消了。我一直在研究大量生成 MDX 的工具。 Mosha Pasumansky's awesome MDX Studiohttp://silverlight.galantis.comRanet Olap Library Components

我现在想要实现的是使用 MDX 设置 Excel 单元格。方法如下:

  1. Excel > 数据选项卡 > 连接 > 连接到多维数据集
  2. 数据透视表,使用现有连接
  3. 将数据添加到数据透视表
  4. 双击数据透视表中的一个值向下钻取,将创建一个包含数据的二维表示的新工作表。
  5. 数据选项卡 > 连接 > 选择由 excel 创建的连接以进行向下钻取。
  6. 单击属性 > 定义并在命令文本字段中粘贴 MDX 查询 > 确定

这会用多维数据集数据填充单元格,但它只有一行,我不知道如何使它成为多行和分层,看看对话框后面是如何只有一行数据:

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

我知道尝试让它工作是一个很长的路要走,我什至怀疑它是否可能,但我已经没有想法了。

我尝试了PowerPivot 工具,它很糟糕,它的立方体浏览器与 SQL 立方体浏览器的工作方式不同,你只能添加列!这就像倒退到标准数据透视表。

所以此时我已经结束了在 Excel 中寻找一个不错的数据透视表“浏览器”的尝试——市场上似乎没有任何东西?这就是为什么我求助于第 3 方工具来获取 MDX 并插入 Excel(通过 VSTO 以编程方式)。

我尝试过的另一件事是Display the MDX query of an Excel 2007 PivotTable

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 属性是只读的!

如果您到了这里,感谢您的阅读,欢迎提出任何想法:)

【问题讨论】:

  • 您是否找到了一种从 MDX 生成数据透视表的新方法?

标签: .net excel ssas mdx pivot-table


【解决方案1】:

您可以构建一个 Excel 插件(请参阅 this other post)。

此插件可能基于ADOMD.NET 连接一个多维数据集并使用您自己的MDX 查询对其进行查询。

给定CellSet,您将能够提取给定单元格并将其插入到 Excel 工作表中的任何需要位置。

【讨论】:

  • 感谢您的回答,请参阅我的带有 Excel 和 VSTO 标签的问答历史。我有一个策略来捕获 Ranet.Olap 控件中层次结构的展开和折叠状态。当 WPF 版本可用时,我将在 VSTO 控件中实现这一点。会有验证和刷新按钮将 Cube Browser/PivotTable 控件与 SSAS 同步。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    相关资源
    最近更新 更多