我正在进行一些活动。每个事件都有日期,金额和状态。我需要一个计算成员,该成员可以按事件,州和从一月的第一天到同一年的选定日期之间返回最后的金额
我尝试了半加法LastChildNonEmpty,但对于最后一次发生事件的事件仅返回一行
使用这些数据,我期望:
问题和结果
-20180101至20180331状态之间的事件已打开:
EVENT1 20180311 12打开
-20180101至20180430状态之间的事件已打开
EVENT1 20180311 12打开
EVENT2 20180406 2打开
-20180101至20180531状态之间的事件已打开
EVENT2 20180406 2打开
-20180101至20180531状态之间的事件关闭
EVENT1 20180523 60关闭
很抱歉,如果格式不正确,但我已阅读并且不知道如何用数据创建表
谢谢
答案 0 :(得分:0)
您可以通过计算出的度量值解决上述问题。 mdx函数BottomCount将解决您的问题。这是一个基于AdventureWorks的示例。以下查询列出了日期,销售区域和客户数。
select [Measures].[Customer Count] on columns,
nonempty(
{(
{[Date].[Date].&[20130101]:[Date].[Date].&[20130713]},
[Sales Reason].[Sales Reason].[Sales Reason])}
,[Measures].[Customer Count]
)
on rows
from [Adventure Works]
where
([Date].[Calendar Year].&[2013])
现在让我们进行计算得出的量度并测试是否适用于示例案例。
with member measures.t
as
(bottomcount(
nonempty(
existing
{([Date].[Date].[Date].members,[Sales Reason].[Sales Reason].currentmember)}
,[Measures].[Customer Count]),
1
).item(0)
,[Measures].[Customer Count])
select measures.t on columns
from [Adventure Works]
where
([Date].[Date].&[20130101]:[Date].[Date].&[20130111],
[Sales Reason].[Sales Reason].[Other])
这个想法是,您可以在日期和度量将列出最后一个值的位置传递日期范围和销售原因。
编辑:当用户传递一个日期并且传递属性层次结构时,以下查询将处理情况。如果通过了用户层次结构,则可以防止年份开始的硬编码
with member measures.t
as
(bottomcount(
nonempty(
{({[Date].[Date].&[20130101]:[Date].[Date].currentmember},[Sales Reason].[Sales Reason].currentmember)}
,[Measures].[Customer Count]),
1
).item(0)
,[Measures].[Customer Count])
select measures.t on columns
from [Adventure Works]
where
([Date].[Date].&[20130111],
[Sales Reason].[Sales Reason].[Other])