MDX 过滤器日期小于今天
MDX Filter date less than today
我想以某种方式在数据集中过滤我的查询,其中我得到从月初到昨天的日期。第一部分很简单,我从报告参数中传递了月份,所以我从一个月中的每一天都得到了值,但不知何故我必须将其限制到昨天。我尝试将此表达式放在 where 子句中,但它根本不起作用,因为我在行上没有日期:FILTER([Date of shipment].[Date], [Date of shipment].[Date] < Format(Now(), "yyyyMMdd")
。
我知道我可以过滤行,但重要的是,我不想在行上显示日期。
编辑:另外我可以使用主报告提供的参数,即昨天的日期。但是我如何限制日期而不把它放在行上呢?这样的事情不起作用:IIF( STRTOSET(@ShipmentDate, CONSTRAINED).Count = 1, STRTOSET(@ShipmentDate, CONSTRAINED), [Shipment Date].[Date] < @ShipmentDate))
解决方法:
由于我通过参数日期传递了月份,因此仅限于当前月份。这让我可以这样做:
[Shipment date].[Datw].&[20160101] : STRTOMEMBER(@ShipmentDate, constrained)
我这样做的方式很丑陋,但它有效(它可能需要维护,明年将日期更改为 20170101 等等)。
您已经有类似的东西了:
SELECT
{} ON 0
,
[Date].[Calendar].[Date].&[20050101]
:
StrToMember
('[Date].[Calendar].[Date].&[20050105]' //<<hard-coded to illustrate
,constrained
) ON 1
FROM [Adventure Works];
Returns:
大多数多维数据集都有多级日期层次结构 - 因此您可以将代码更改为类似这样的内容,这样明年您就不需要更改硬编码位:
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]'
那么我得到以下信息:
我想以某种方式在数据集中过滤我的查询,其中我得到从月初到昨天的日期。第一部分很简单,我从报告参数中传递了月份,所以我从一个月中的每一天都得到了值,但不知何故我必须将其限制到昨天。我尝试将此表达式放在 where 子句中,但它根本不起作用,因为我在行上没有日期:FILTER([Date of shipment].[Date], [Date of shipment].[Date] < Format(Now(), "yyyyMMdd")
。
我知道我可以过滤行,但重要的是,我不想在行上显示日期。
编辑:另外我可以使用主报告提供的参数,即昨天的日期。但是我如何限制日期而不把它放在行上呢?这样的事情不起作用:IIF( STRTOSET(@ShipmentDate, CONSTRAINED).Count = 1, STRTOSET(@ShipmentDate, CONSTRAINED), [Shipment Date].[Date] < @ShipmentDate))
解决方法: 由于我通过参数日期传递了月份,因此仅限于当前月份。这让我可以这样做:
[Shipment date].[Datw].&[20160101] : STRTOMEMBER(@ShipmentDate, constrained)
我这样做的方式很丑陋,但它有效(它可能需要维护,明年将日期更改为 20170101 等等)。
您已经有类似的东西了:
SELECT
{} ON 0
,
[Date].[Calendar].[Date].&[20050101]
:
StrToMember
('[Date].[Calendar].[Date].&[20050105]' //<<hard-coded to illustrate
,constrained
) ON 1
FROM [Adventure Works];
Returns:
大多数多维数据集都有多级日期层次结构 - 因此您可以将代码更改为类似这样的内容,这样明年您就不需要更改硬编码位:
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]'
那么我得到以下信息: