我目前正在尝试使用计算会员返回客户首次销售的销售金额。我通过查看各种博客使用了一些我稍微修改过的代码,但遇到了一些与我正在寻找的结果集一致的方式进行调整的问题。
我正在尝试创建多个计算成员,一个用于返回特定产品的第一个订单日期,我有。我现在想接受那个日期,并仅在那一天返回该产品的销售额。这是我遇到问题的地方,因为每当我将Date Axis放入等式时,除非它处于层次结构的Day级别,CurrentMember函数将聚合到任何级别并导致一些不一致。
以下是我目前的概况
WITH
MEMBER [Measures].[DaysToDate] AS
COUNT(NULL:[Date].[Fiscal].CURRENTMEMBER)
MEMBER [Measures].[HadSale] AS
IIF([Measures].[Product Sales]=0,NULL,[Measures].[DaysToDate])
MEMBER [Measures].[MinDate] AS
MIN(NULL:[Date].[Fiscal].CURRENTMEMBER, [Measures].[HadSale])
MEMBER [Measures].[FirstSaleDay] AS
IIF(ISEMPTY([Measures].[MinDate]), NULL,
[Date].[Fiscal].[Day].MEMBERS.ITEM([Measures].[MinDate]).NAME)
SELECT {
[Measures].[DaysToDate]
,[Measures].[HadSale]
,[Measures].[MinDate]
,[Measures].[FirstSaleDay]
} ON 0,
[Sales Team].[Sales Team].[Customer].MEMBERS ON 1
FROM [Sales and Marketing]
如果我在前一天的Day级别放入WHERE子句(这是我们的最后一个处理时间),此代码将起作用。但是,如果我放入允许说财政季度,或放在列上,这是一个高于日的水平,它然后计算基于季度而不是天数的CurrentMembers并返回不正确的天数,因为内部传递[FirstSaleDay]中的ITEM()。
我主要是在寻找一种方法来强制这些计算在日级操作,而不是层次结构恰好被传递到最终查询。
非常感谢任何帮助。
答案 0 :(得分:0)
我还没有回答你的整个问题,但是既然你结束了这个说法,你大部分都在寻找一种方法来强迫计算成员使用" day"你的层次结构的级别,我认为这应该为你做。这是我过去使用的一种技术。
MEMBER x As Descendants([Date].[Fiscal].CurrentMember,4,SELF).Item(0).Value
此公式首先查看您的日历,然后导航到层次结构的顶部(即公式中的 SELF )。然后它导航到指定的级别。在我的日历中,我有四个级别,但是你的级别可能不同,所以你需要调整它,如果是的话。这是一个集合,但您可以使用 .Item(0)获取第一个成员,假设您的日历以典型方式排序。 .Value 不是必需的,但有助于测试,因为它允许您将此公式定义为成员。