使用日期选择器范围作为 MDX 查询中的过滤器

Use date picker range as a filter in a MDX query

我针对演示销售多维数据集创建了一个报告。 它包括一个日期选择器,范围为(从 & 到),其中 "on selection" 事件被命名为日期 window。
& 一个枢轴 table 和一个 MDX 类似这样的查询:

SELECT 
        [Time].[Calendar].[Day].[7 Jan 2005]
      : 
        [Time].[Calendar].[Day].[10 Jan 2005] ON 0
FROM [Sales];  

我想用日期选择器中的从和到替换查询中的固定日期。怎么做?

mdx 的许多方言中,如果您有一个名为 @aDate 的参数,让我们假设其当前值为 7 Jan 2005,那么您可以通过strToMember 函数如下:

strToMember('[Time].[Calendar].[Day].[' + @aDate + ']')

或者像这样的 strToSet 函数:

strToSet('[Time].[Calendar].[Day].[' + @aDate + ']:[Time].[Calendar].[Day].[' + @aSECONDDate + ']')

在 icCube 中,我宁愿使用 MDX 函数 LookupByKey instead of strToMember。除了更好的类型之外,编译器可以很容易地猜出在一些场景中很方便的层次结构。恕我直言,尽量不要使用 StrToMember。像 :

 [Calendar].[Day].lookupByKey( StringToDate(@date,"d/M/yyyy") )

要将字符串解析为日期,您可以使用一些函数 (here and here)。

我认为范围过滤器直接 returns 直接在事件中的 MDX 范围表达式(如果不是这样,请直接联系我们)。

如上所述,IcCube 日期选择器小部件 returns 范围的有效 MDX 值。这里是 demo report 描述的配置。

有关更多详细信息,请查看 Date Picker 的设置和 Pivot Table 的 mdx 设置。