Присвоить значение измерения переменной SSIS

У меня есть иерархия кубов данных следующим образом.

Я могу получить доступ к выделенному узлу как

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

Я пытался выполнить этот запрос в Execute SQL task и назначьте вывод переменной SSIS. Но проблема в том, что имя столбца меняется. Я также пытался присвоить псевдоним столбцу. Как мне этого добиться?

1 ответ

Решение

Вы можете использовать вычисленную меру в области запроса для создания псевдонима. В качестве примера я использую куб 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 (не рекомендуется для этой ситуации).
Другие вопросы по тегам