MDX筛选日期小于今天
问题描述:
我想以某种方式在数据集中过滤我的查询,其中我从月初到昨天获得了日期。第一部分很简单,我从报告参数中通过一个月,所以我从每个月的每一天都得到了值,但不知何故我必须将其限制到昨天。我试着把这个表达式放在where子句中,但它没有工作,因为我没有行的日期:FILTER([Date of shipment].[Date], [Date of shipment].[Date] < Format(Now(), "yyyyMMdd")
。 我知道我可以过滤行,但重要的是,我不希望日期显示在行上。MDX筛选日期小于今天
编辑:此外,我可以使用主报告提供的参数,这是昨天的日期。但是,如何限制日期而不将其放在行上?像这样的东西不起作用:IIF(STRTOSET(@ShipmentDate, CONSTRAINED).Count = 1, STRTOSET(@ShipmentDate, CONSTRAINED), [Shipment Date].[Date] < @ShipmentDate))
答
你已经有类似这样的东西:
SELECT
{} ON 0
,
[Date].[Calendar].[Date].&[20050101]
:
StrToMember
('[Date].[Calendar].[Date].&[20050105]' //<<hard-coded to illustrate
,constrained
) ON 1
FROM [Adventure Works];
返回:
大多数立方体有一个多层次的日期层次 - 这样你就可以将代码更改为类似的所以明年你不需要改变硬编码位:
SELECT
{} ON 0
,
Descendants
(
Exists
(
[Date].[Calendar].[Calendar Year].MEMBERS
,StrToMember
(@ShipmentDate
,constrained
)
).Item(0)
,[Date].[Calendar].[Date]
).Item(0)
:
StrToMember
(@ShipmentDate
,constrained
) ON 1
FROM [Adventure Works];
如果@ShipmentDate
设置为'[Date].[Calendar].[Date].&[20060105]'
然后我得到如下:
答
解决方案: 因为我有过月通过参数日期限于本月。这让我做到这一点:
[Shipment date].[Datw].&[20160101] : STRTOMEMBER(@ShipmentDate, constrained)
方式,我这样做是丑陋的,但它的工作原理(这可能需要mainteance,在明年改变日期20170101等)。
谢谢,这是非常好的。我会用你的解决方案。 – Dodzik