0

我的数据立方体层次结构如下。 在此处输入图像描述

我可以访问突出显示的节点

SELECT  [Calendar].[Report Days].[All Members].[All].[WantInReport].[Yesterday].LastChild ON 0

我尝试在其中运行此查询Execute SQL task并将输出分配给 SSIS 变量。但问题是列名正在改变。我也尝试为列名起别名。我怎样才能做到这一点?

4

1 回答 1

3

您可以使用查询范围的计算度量来创建别名。例如,我正在使用 AdventureWorks 多维数据集。以下查询将为我提供我提供的成员的日历层次结构中的最后一个子项。

SELECT [Date].[Calendar].[All Periods].[CY 2014].[H1 CY 2014].lastchild on 0
FROM [Adventure Works]

正如您所说,由于最后一个孩子会随着时间的推移而变化,因此成员名称会发生​​变化,从而需要对其进行别名以提供常量名称。为此,请创建一个计算度量。您将逻辑移动到 WITH MEMBER 语句并获取成员标题而不是成员,然后在 0 轴上使用新的计算度量。

WITH MEMBER [Measures].[MyLastChild] AS 
       [Date].[Calendar].[All Periods].[CY 2014].[H1 CY 2014].LASTCHILD.MEMBER_CAPTION
SELECT {Measures.MyLastChild} on 0
FROM [Adventure Works]

所以你的查询会是这样的

WITH MEMBER [Measures].[Last Day] AS
[Calendar].[Report Days].[All Members].[WantInReport].[Yesterday].LastChild.MEMBER_CAPTION
SELECT [Measures].[Last Day] ON 0
FROM [MyCube]

如果您在执行 MDX 查询并在 SSIS 中返回该结果时遇到问题,您有几个选择。

  1. 使用此处所示的 OLE DB 源。
  2. 设置链接服务器并使用 OpenQuery 将 MDX 结果作为 T-SQL 结果返回(不建议在这种情况下使用)。
于 2015-03-16T14:30:22.617 回答