MDX - StrToMember в диапазоне - PullRequest
       25

MDX - StrToMember в диапазоне

0 голосов
/ 26 февраля 2019

Я довольно новичок в использовании MDX, я использую его в Power BI для создания различных отчетов.

Я на самом деле застрял с проблемой после многих исследований на разных страницах, связанных со временем.Диапазоны.

В Кубе есть измерение [Время]. [Дата]. [Дата], которое идет от 2014 до 2020 , поэтому я выясняюпосле многих часов, в течение которых все параметры, использующие Текущий элемент, не будут работать.

Мне нужно получить показатель за последние 7, 30, 60, 90 дней.

Я нашел два варианта:

ВАРИАНТ 1. Использование WITH и члена:

`WITH MEMBER [Measures].x AS SUM  
({[Time].[Date].&[20190216]:[Time].[Date].&[20190222])
},[Measures].[Avg Loaned])

SELECT NON EMPTY {[Measures].x} on 0
,NON EMPTY ([Time].[Date].[Date]) on 1
FROM [MYCUBE]
WHERE (Some Conditions...)`

ВАРИАНТ 2. Использование WITH, Range и Member

`WITH 
SET [Range] AS
{[Time].[Date].&[20190216]:[Time].[Date].&[20190222]}
MEMBER [Measures].x AS SUM  
   ({nonempty([Range]*[Measures].[Avg Loaned])})  

SELECT NON EMPTY {[Measures].x} on 0
,NON EMPTY ([Time].[Date].[Date]) on 1
FROM [MYCUBE]
WHERE (Some Conditions...)`

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

**[Time].[Date].&[20190222]** --> StrToMember("[Time].[Date].&[" + Format(Now(), "YYYYMMDD") + "]")

Но это не работает, когда я заменяю первую дату

**[Time].[Date].&[20190216]** --> StrToMember('[Time].[Date].&[' + Format(dateadd('d',-7,Now()), 'YYYYMMDD') + "]")

ИЛИ

**[Time].[Date].&[20190216]** --> StrToMember('[Time].[Date].&[' + Format(dateadd('d',-7,cdate(Now())), 'YYYYMMDD') + "]")

ИЛИ

**[Time].[Date].&[20190216]** --> StrToMember('[Time].[Date].&[' + Format(cstr(dateadd('d',-7,Now())), 'YYYYMMDD') + "]")

Я не уверен, каков наилучший способ выполнить задачу, ВАРИАНТ 1 или2, но главный контрольно-пропускной пунктВот как я записываю начальный предел для диапазона, пытающегося использовать dateadd.

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

Rgds Pablo

1 Ответ

0 голосов
/ 26 февраля 2019

В вашем рабочем примере у вас есть StrToMember (", а в нерабочем примере у вас есть StrToMember (', поэтому, вероятно, вы должны использовать двойные кавычки, а не одинарные кавычки: StrToMember (" [Time]. [Date]. & [")...

...