将维度值分配​​给 SSIS 变量

Assign Dimension value to SSIS variable

我的数据立方体层次结构如下。

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

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

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

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

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

正如您所说,由于最后一个 child 随着时间的推移而发生变化,因此成员名称也会发生变化,因此需要对其进行别名以提供常量名称。为此,创建一个计算度量。您将逻辑移至 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(不推荐用于这种情况)。