首页 > 解决方案 > 将日期范围调整为 MDX 中的现有成员

问题描述

我有一个带有DateFromDateTo参数的报告。两者都是日历 - 您可以选择具有日期精度的日期。

报告中的数据集之一是 MDX 数据集。我用strtoset它来提供日期范围,参数的表达式为strtoset

="([Test Run].[Complete Date Hierarchy By Month].[Date].&[" & Format(Parameters!FromDate.Value, "yyyy-MM-dd") & "T00:00:00]:[Test Run].[Complete Date Hierarchy By Month].[Date].&[" & Format(Parameters!ToDate.Value, "yyyy-MM-dd") & "T00:00:00])"

问题是,如果开始日期和结束日期不是维度中的成员,则查询将返回所有空值。

有什么方法可以将用户提供的日期调整为维度中最近的现有成员,向前(对于 From)或向后(对于 To)?

编辑:我现在正在尝试使用过滤器在 [From:To) 范围内生成一组日期值。它的工作原理是它不会出错,但结果集与我所拥有的不同strtoset()。现在 Where 子句中有以下内容:

filter([Test Run].[Complete Date Hierarchy By Month].[Date],
    [Test Run].[Complete Date Hierarchy By Month].currentmember.member_value >= CDate('2017-10-01') and
    [Test Run].[Complete Date Hierarchy By Month].currentmember.member_value < CDate('2018-07-01'))

我得到的数字略有不同。这怎么可能?

标签: reporting-servicesssasmdx

解决方案


FILTER([Test Run].[Complete Date Hierarchy By Month].[Date],
[Test Run].[Complete Date Hierarchy By Month].[Date].CurrentMember.Member_Value >= CDate('2018-01-01') and
[Test Run].[Complete Date Hierarchy By Month].[Date].CurrentMember.Member_Value < CDate('2018-04-01'))

推荐阅读