我有正在进行的活动。每个活动都有日期,金额和状态。我需要一个计算成员,它按事件,状态以及1月的第一天到同一年的选定日期之间返回最后一笔金额
我尝试了半加法LastChildNonEmpty,但只为具有最后日期的事件返回一行
有了这些数据,我希望:
问题和结果
- 20180101和20180331之间的活动状态: EVENT1 20180311 12开放
- 20180101和20180430之间的活动状态开启 EVENT1 20180311 12开放
EVENT2 20180406 2开放
- 20180101和20180531之间的活动状态开启 EVENT2 20180406 2开放
- 20180101和20180531之间的事件状态关闭 EVENT1 20180523 60关闭
我很抱歉,如果格式不好,但我已阅读,我不知道如何创建一个包含数据的表
谢谢
您可以使用计算的度量来解决上述问题。 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])