MDX Date Formatting
Кто-нибудь может подсказать, пожалуйста, как форматировать дату в запросах MDX? Мы не используем SSRS для генерации отчетов, у нас есть собственный инструмент отчетности, построенный на SSAS. Фильтр даты отправляет дату в формате гггг / мм / дд. На данный момент у нас нет измерения даты. Моя дата-член выглядит так:
[CNB_DimSampleInfo].[COAReleasedON].&[2013-01-02T03:20:00].
Как я могу отформатировать дату в STRTOmemeber? Я пытался сделать это. Мой вопрос заключается в том, как значение, полученное от пользователя, будет соответствовать формату моего члена, как показано ниже. Я знаю, что ssrs делает это легко, но мы не используем SSRS. Ниже мой код
мой код
SELECT
[Measures].[Result] ON COLUMNS
,NON EMPTY
{
[CNB_DimProduct].[ProductUcode].[ProductUcode].ALLMEMBERS*
[CNB_DimProduct].[ProductDesc].[ProductDesc].ALLMEMBERS*
[CNB_DimTest].[TestUcode].[TestUcode].ALLMEMBERS*
[CNB_DimTest].[TestName].[TestName].ALLMEMBERS*
[CNB_DimSampleInfo].[LotNo].[LotNo].ALLMEMBERS*
[CNB_DimSampleInfo].[BatchNo].[BatchNo].ALLMEMBERS*
[CNB_DimSampleInfo].[COAReleasedBy].[COAReleasedBy].ALLMEMBERS*
[CNB_DimSampleInfo].[COAReleasedON].[COAReleasedON].ALLMEMBERS*
[CNB_DimSampleInfo].[SampleReferenceNo].[SampleReferenceNo].ALLMEMBERS*
[CNB_DimSampleInfo].[AnalysedBy].[AnalysedBy].ALLMEMBERS*
[CNB_DimSampleInfo].[AnalysedOn].[AnalysedOn].ALLMEMBERS
} ON ROWS
FROM
(
SELECT
StrToMember
(
"[CNB_DimSampleInfo].[COAReleasedON].[" + Format("2013-01-02","yyyy MM")
+ "]:STRTOMember([CNB_DimSampleInfo].[COAReleasedON].["
+
Format
("2013-01-02"
,"yyyy MM"
)
+ "]"
) ON COLUMNS
FROM Cube001
);
3 ответа
Ваше свидание
[CNB_DimSampleInfo].[COAReleasedON].&[2013-01-02T03:20:00]
выглядит как плохой кандидат на параметр даты пользователя, так как он точен с точностью до минуты (возможно, второй). Если пользователь точно не соответствует времени, он ничего не получит. Но, возможно, вы вводите точные совпадения, используя список выбора LimitToList в пользовательском интерфейсе.
Чтобы получить это имя члена, вы можете отформатировать входную строку следующим образом:
формат ([Ваш входной параметр],'гггг-мм-ддчч: мм: сс')
Я попытался с помощью фильтра, как показано ниже
SELECT
[Measures].[Result] ON COLUMNS
,NON EMPTY
{
filter([CNB_DimSampleInfo].[COAReleasedON].members,instr([CNB_DimSampleInfo].[COAReleasedON].currentmember.member_caption,"2013-01-02")>0 or instr([CNB_DimSampleInfo].[COAReleasedON].currentmember.member_caption, "2013-04-01")>0)
*[CNB_DimProduct].[ProductUcode].[ProductUcode].ALLMEMBERS*
[CNB_DimProduct].[ProductDesc].[ProductDesc].ALLMEMBERS*
[CNB_DimTest].[TestUcode].[TestUcode].ALLMEMBERS*
[CNB_DimTest].[TestName].[TestName].ALLMEMBERS
} ON ROWS
ОТ Cube002
Существует также StrToSet
что лучше в ваших обстоятельствах, когда вы используете :
оператор, который возвращает набор:
...
...
FROM
(
SELECT
StrToSet
(
"[CNB_DimSampleInfo].[COAReleasedON].[" + Format("2013-01-02","yyyy MM")
+ "]:[CNB_DimSampleInfo].[COAReleasedON].["
+
Format
("2013-01-02"
,"yyyy MM"
)
+ "]"
,CONSTRAINED
) ON COLUMNS
FROM Cube001
);
следующее определенно возвращает дату, отформатированную так же, как ваши ключевые значения?
Format("2013-01-02","yyyy MM")
Ваши ключевые значения для дат выглядят так?...
[CNB_DimSampleInfo].[COAReleasedON].[2013 01]