致MDX大师, 一个星期以来,我一直在打击这个,我无法解决它。可以解决吗?
在SSAS BID中创建计算成员表达式以计算Weighted_Members,其描述如下: "对于选择的任何日期,我们需要计算与最近一次访问唯一成员相关的权重总和。"
在伪代码中:SUM(DISTINCT成员的(MAX(日期权重)))
注意: *权重是指会员访问特定地点,适用于1个月。
以下是事实表的示例: *两名成员(会员编号:100和103) *访问3个不同的位置(位置ID:200,220和230) *在2014年和2015年的不同日期。
1 | Jan 1, 2014 | 100 | 230 | 3.5 |
2 | Mar 1, 2014 | 100 | 220 | 2.0 |
3 | May 1, 2015 | 100 | 220 | 2.5 |
4 | Apr 1, 2014 | 103 | 200 | 1.0 |
5 | Jul 1, 2014 | 103 | 220 | 1.5 |
6 | Sep 1, 2014 | 103 | 230 | 0.5 |
7 | Nov 1, 2014 | 103 | 220 | 3.0 |
8 | Jan 1, 2015 | 103 | 220 | 1.0 |
9 | Aug 1, 2015 | 103 | 200 | 7.0 |
10 | Sep 1, 2015 | 103 | 230 | 4.5 |
11 | Dec 1, 2015 | 103 | 200 | 1.5 |
访问日期维度具有以下属性: * 年 * 25美分硬币 *月 *日期 *日历年 - >季度 - >月 - >日期(calendar_quarter_hierarchy) *日历年 - >月 - >日期(calendar_month_hierarchy)
成员资格维度具有以下属性: * membership_id(当前可见性设置为false(或隐藏),因为有> 5M记录) * 性别 *年龄群组
“位置维度”具有以下属性: * Location_ID * 地点名称 *城市 *省 *省 - >城市 - > Location_Name(Geographical_hierarchy)
示例#1。)2014年年会的Weighted_Members计算如下: 第1步:过滤2014年年度活动的事实数据。
Visits_F_ID | Visit_Date | Membership_ID | Location_ID | Weights |
=============================================================================
1 | Jan 1, 2014 | 100 | 230 | 2.5 |
2 | Mar 1, 2014 | 100 | 220 | 2.0 |
4 | Apr 1, 2014 | 103 | 200 | 1.0 |
5 | Jul 1, 2014 | 103 | 220 | 1.5 |
6 | Sep 1, 2014 | 103 | 230 | 0.5 |
7 | Nov 1, 2014 | 103 | 220 | 3.0 |
第2步:从上面的每个独特成员中获取最近日期的数据:
Visits_F_ID | Visit_Date | Membership_ID | Location_ID | Weights |
=============================================================================
2 | Mar 1, 2014 | 100 | 220 | 2.0 |
7 | Nov 1, 2014 | 103 | 220 | 3.0 |
步骤3:对权重求和,得出Weighted_Members = 2.0 + 3.0为5.0
====== 示例#2。)如果多维数据集用户按照上面示例#1中的相同三个步骤切换2015年的时间段,则Weighted_Members:
Visits_F_ID | Visit_Date | Membership_ID | Location_ID | Weights |
=============================================================================
3 | May 1, 2015 | 100 | 220 | 2.5 |
11 | Dec 1, 2015 | 103 | 200 | 1.5 |
Weighted_Members = 2.5 + 1.5是4.0
====== 示例#3。)如果多维数据集用户切换2014年3月到2014年10月的时间段并且对访问location_id = 220感兴趣,那么Weighted_Members:
Visits_F_ID | Visit_Date | Membership_ID | Location_ID | Weights |
=============================================================================
2 | Mar 1, 2014 | 100 | 220 | 2.0 |
5 | Jul 1, 2014 | 103 | 220 | 1.5 |
Weighted_Members = 2.0 + 1.5是3.5
====== 示例#4。)如果多维数据集用户切换2015年7月到2015年8月的时间段,Weighted_Members:
Visits_F_ID | Visit_Date | Membership_ID | Location_ID | Weights |
=============================================================================
9 | Aug 1, 2015 | 103 | 200 | 7.0 |
Weighted_Members = 7.0
答案 0 :(得分:0)
根据我的理解 - 你可以尝试一下:
WITH MEMBER Measures.YourCalcMember AS
SUM
(
generate
(
Customer.CustomerID.MEMBERS AS S,
s.CURRENT *
TAIL(
NonEmpty
(
[Date].[Date].[Date].MEMBERS, --The last date for the "current" customer
(s.CURRENT, [Measures].[Weight])
)
)
)
,
Measures.[Weight]
)
SELECT Measures.YourCalcMember ON 0,
Location.LocationID.MEMBERS ON 1
FROM
(
SELECT [Date].[Year].&[2014] ON 0 FROM [Your Cube] --The year filter
)
使用“生成”功能,循环访问客户并获得该客户的交叉customerId和“最后”日期。然后,在此集合上,获得权重之和。
所有人都说,在正确尝试这个问题之前,还需要进一步的细节。