2013-07-08 2 views
2

Если я запускаю следующее:Возврата члены пользовательской Даты Месяц

WITH MEMBER [Date].[Date - Calendar Month].[Last Completed Month] AS 
    IIF(Day(Now()) = 1, 
     TAIL([Date].[Date - Calendar Month].[Calendar Month],1)(0), 
     TAIL([Date].[Date - Calendar Month].[Calendar Month],2)(0) 
    ) 
SELECT 
     NON EMPTY 
      [Date].[Date - Calendar Month].[Last Completed Month] 
     ON COLUMNS 
FROM [OurCube] 
WHERE ([Measures].[NumUsers]) 

возвращает это:

enter image description here

Можно ли изменить сценарий так, что вместо того, чтобы использовать «последний завершенный месяц «как заголовок столбца он использует фактический месяц« Июнь 2013 »?

ответ

0
declare @cur_date varchar(20), @linked_server varchar(20) = 'YourLinkedServer' 
set @cur_date=datename(M,GETDATE()) + ' '+ datename(YYYY,GETDATE()) 
declare @mdx_query varchar(max) = 
'WITH MEMBER [Date].[Date - Calendar Month].[Last Completed Month] AS 
    IIF(Day(Now()) = 1, 
     TAIL([Date].[Date - Calendar Month].[Calendar Month],1)(0), 
     TAIL([Date].[Date - Calendar Month].[Calendar Month],2)(0) 
    ) 
SELECT 
     NON EMPTY 
    [Date].[Date - Calendar Month].[Last Completed Month] as ''' + @cur_date + ''' 
     ON COLUMNS 
FROM [OurCube] 
WHERE ([Measures].[NumUsers])' 

set @mdx_query='Select * from openrowset('''[email protected]_server+''','''[email protected]_query+''')' 
EXEC sp_executesql @mdx_query 

Что касается чистого решения MDX, то существует way.

+0

'sp_executesql' будет работать' MDX' против 'базы данных SSAS OLAP'? – whytheq

+0

'Выберите * из openrowset (' '' + @ linked_server + '' ',' '' + @ mdx_query + '' ')' – revoua

+0

спасибо за обходной путь - хотя я надеюсь на чистый ответ «MDX» без необходимости падать назад на 'dynamic sql'. – whytheq

1

Не думайте, что это возможно; свойство CAPTION, похоже, не принимает выражение MDX.

WITH MEMBER XX as 42, CAPTION = 'Answer' 
SELECT XX ... 

В зависимости от того, как MDX используется, вы можете добавить вычисляемый элемент отображения имени

WITH 
    MEMBER [LCM Value] as (...) 
    MEMBER [LCM Name ] as (...).name 

SELECT 
{ [LCM Value], [LCM Name] } on 0 
... 
+0

+1 благодарит за информацию Марк. Похож на то, что ответ ревуи так близок, что мы получим – whytheq

Смежные вопросы