日期小于现在的MDX

日期小于现在的MDX,mdx,cube,Mdx,Cube,下面是我的代码 SELECT { [Measures].[ACPPurchaseValue] } ON COLUMNS ,( [Date].[YYYYMMDD].[YYYYMMDD] ) ON ROWS FROM [Kahuna] WHERE ( [Reporting Currency].[reportingCurrency].&[1] ,strToSet(@MdxBOSP) ,strToSet(@MdxVIPType)

下面是我的代码

    SELECT 
 {
    [Measures].[ACPPurchaseValue]

  } ON COLUMNS
,(

   [Date].[YYYYMMDD].[YYYYMMDD]

  ) ON ROWS
FROM [Kahuna]
WHERE  
  (
    [Reporting Currency].[reportingCurrency].&[1]
   ,strToSet(@MdxBOSP)
   ,strToSet(@MdxVIPType)
   ,strToSet(@MdxHost)
   ,strToSet(@MdxOperatorName)
  );

我如何说出[Date].[yyyyymmdd].[yyyyymmdd]您最初需要创建一个与今天相对应的成员或单个成员集

以下内容看起来有点复杂,但实际上是Tomislav Piasevoli提出的一种相当标准的方法,它与
AdvWrks
dimension
Date
相反:

WITH
  MEMBER [Measures].[Key for Today] AS 
    Format
    (
      Now()
     ,'yyyyMMdd'
    ) 
  MEMBER [Measures].[Today string] AS 
    '[Date].[Calendar].[Date].&[' + [Measures].[Key for Today] + ']' 
  SET [Today] AS 
    StrToMember
    (
      [Measures].[Today string]
     ,constrained
    ) 
...
因此,根据您的情况:

WITH
  MEMBER [Measures].[Key for Today] AS 
    Format
    (
      Now()
     ,'yyyyMMdd'
    ) 
  MEMBER [Measures].[Today string] AS 
    '[Date].[YYYYMMDD].[YYYYMMDD].&[' + [Measures].[Key for Today] + ']' 
  SET [Today] AS 
    StrToMember
    (
      [Measures].[Today string]
     ,constrained
    ) 
SELECT 
   [Measures].[ACPPurchaseValue] ON 0
  ,{null:[Today].item(0).item(0)}  ON 1
FROM [Kahuna]
WHERE  
  (
    [Reporting Currency].[reportingCurrency].&[1]
   ,strToSet(@MdxBOSP)
   ,strToSet(@MdxVIPType)
   ,strToSet(@MdxHost)
   ,strToSet(@MdxOperatorName)
  );
另外两个更好的解决方案可以简化每个人的生活:

  • 不要在多维数据集中具体化将来的日期

  • 保留未来日期,但添加一个名为
    [Today]
    的自定义集和一个名为Today的计算成员作为Date的All成员的子成员


  • 您首先需要创建一个成员或单个成员集,该成员集对应于今天

    以下内容看起来有点复杂,但实际上是Tomislav Piasevoli提出的一种相当标准的方法,它与
    AdvWrks
    dimension
    Date
    相反:

    WITH
      MEMBER [Measures].[Key for Today] AS 
        Format
        (
          Now()
         ,'yyyyMMdd'
        ) 
      MEMBER [Measures].[Today string] AS 
        '[Date].[Calendar].[Date].&[' + [Measures].[Key for Today] + ']' 
      SET [Today] AS 
        StrToMember
        (
          [Measures].[Today string]
         ,constrained
        ) 
    ...
    
    因此,根据您的情况:

    WITH
      MEMBER [Measures].[Key for Today] AS 
        Format
        (
          Now()
         ,'yyyyMMdd'
        ) 
      MEMBER [Measures].[Today string] AS 
        '[Date].[YYYYMMDD].[YYYYMMDD].&[' + [Measures].[Key for Today] + ']' 
      SET [Today] AS 
        StrToMember
        (
          [Measures].[Today string]
         ,constrained
        ) 
    SELECT 
       [Measures].[ACPPurchaseValue] ON 0
      ,{null:[Today].item(0).item(0)}  ON 1
    FROM [Kahuna]
    WHERE  
      (
        [Reporting Currency].[reportingCurrency].&[1]
       ,strToSet(@MdxBOSP)
       ,strToSet(@MdxVIPType)
       ,strToSet(@MdxHost)
       ,strToSet(@MdxOperatorName)
      );
    
    另外两个更好的解决方案可以简化每个人的生活:

  • 不要在多维数据集中具体化将来的日期

  • 保留未来日期,但添加一个名为
    [Today]
    的自定义集和一个名为Today的计算成员作为Date的All成员的子成员


  • 您不能这样说:
    [Date].[yyyyymmdd].[yyyyymmdd]
    …在
    的两边有不同的类型您不能这样说:
    [Date].[yyyyymmdd].[yyyyyymmdd]
    …你在
    的两边都有不同的类型,如果你只是在日期维度中添加一个isplastDate标志作为新属性,将会更加简单和高效。Cheers@GregGalloway:我玩的立方体没有未来的日期。嗨,whytheq,我想这类似于请看一下这个,我曾试图解决这个问题,但未能解决。如果您只需在日期维度中添加一个isplastDate标志作为新属性,将会更加简单和高效。Cheers@GregGalloway:我要玩的多维数据集没有未来的日期。嗨,whytheq,我想这类似于请看一看,我正在尝试解决这个问题,但是不能。