0

谁能告诉我如何在 MDX 查询中格式化日期?我们不使用 SSRS 生成报告,我们有自己的基于 SSAS 的自定义报告工具。日期过滤器以 yyyy/mm/dd 格式发送日期。截至目前,我们没有日期维度。我的约会成员看起来像:

[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
);
4

3 回答 3

0

你的约会成员

[CNB_DimSampleInfo].[COAReleasedON].&[2013-01-02T03:20:00]

看起来不太适合作为用户日期参数,因为它精确到分钟(可能是秒)。除非用户与时间完全匹配,否则他们将一无所获。但也许您通过在 UI 中使用 LimitToList 选择列表来强制执行完全匹配。

要获取此成员名称,您可以像这样格式化输入字符串:

format([你的输入参数],'yyyy-MM-ddThh:mm:ss')

于 2016-04-29T11:23:39.170 回答
0

我已经尝试使用如下过滤器

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

于 2016-05-03T04:43:15.603 回答
0

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]
于 2016-04-29T09:50:02.120 回答