将Dimension值分配给SSIS变量

时间:2015-03-16 06:09:23

标签: sql-server-2008 ssis ssas ssas-2008 data-cube

我有数据立方体层次结构如下。 enter image description here

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

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

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

1 个答案:

答案 0 :(得分: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源here
  2. 设置链接服务器和use OpenQuery to return the MDX results as T-SQL results(不建议用于此情况)。