SSAS MDX的总和(不同客户的最大重量)

SSAS MDX的总和(不同客户的最大重量),ssas,mdx,Ssas,Mdx,对于MDX大师, 这件事我已经绞尽脑汁一个星期了,我还没有解决它。能解决吗 以下是挑战: 在SSAS BIDs中创建计算成员表达式以计算加权_成员,如下所述: “对于选择的任何日期期间,我们都需要计算与唯一成员最近访问相关的权重之和。” 在伪代码中:SUM(不同成员的最大值(日期的权重))) 注: *权重是指会员对特定地点的访问,适用于1个月 以下是事实表的示例,显示: *两名成员(成员编号:100和103) *访问3个不同的地点(地点id:200、220和230) *2014年和2015年的不

对于MDX大师, 这件事我已经绞尽脑汁一个星期了,我还没有解决它。能解决吗

以下是挑战: 在SSAS BIDs中创建计算成员表达式以计算加权_成员,如下所述: “对于选择的任何日期期间,我们都需要计算与唯一成员最近访问相关的权重之和。”

在伪代码中:SUM(不同成员的最大值(日期的权重)))

注: *权重是指会员对特定地点的访问,适用于1个月

以下是事实表的示例,显示: *两名成员(成员编号:100和103) *访问3个不同的地点(地点id:200、220和230) *2014年和2015年的不同日期

访问|访问|日期|会员|身份|地点|身份|权重| 尺寸: “就诊日期”维度具有以下属性: *年 *四分之一 *月 *日期 *日历年->季度->月->日期(日历\季度\层次结构) *日历年->月->日期(日历\月\层次结构)

成员资格维度具有以下属性: *成员身份(当前可见性设置为false(或隐藏),因为记录数>5M) *性别 *年龄组

位置维度具有以下属性: *位置标识 *地点名称 *城市 *省 *省->市->位置\u名称(地理\u层级)

示例: 示例#1.)2014年加权#U成员的计算如下: 步骤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:将权重相加,得出加权的_成员=2.0+3.0为5.0

====== 示例#2.)如果多维数据集用户按照上述示例#1中相同的三个步骤对2015年的时间段进行切片,则加权的#u成员:

        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      |
        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      |
        Visits_F_ID |  Visit_Date     |  Membership_ID  |  Location_ID |  Weights  |
        =============================================================================
                 9  |  Aug 1, 2015    |        103      |  200         |  7.0      |
加权_成员=2.5+1.5等于4.0

========= 示例#3.)如果多维数据集用户在2014年3月至2014年10月期间进行切片,并且有兴趣访问位置_id=220,则加权_成员:

        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      |
        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      |
        Visits_F_ID |  Visit_Date     |  Membership_ID  |  Location_ID |  Weights  |
        =============================================================================
                 9  |  Aug 1, 2015    |        103      |  200         |  7.0      |
加权_成员=2.0+1.5等于3.5

====== 示例#4.)如果多维数据集用户在2015年7月至2015年8月期间进行切片,则加权的#u成员:

        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      |
        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      |
        Visits_F_ID |  Visit_Date     |  Membership_ID  |  Location_ID |  Weights  |
        =============================================================================
                 9  |  Aug 1, 2015    |        103      |  200         |  7.0      |

根据我的理解,加权成员数=7.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
)
使用“生成”功能,循环遍历客户,获得客户ID的交叉集和该客户的“最后”日期。然后在此集合上,获得权重之和


综上所述,在正确回答这个问题之前,还需要进一步的详细信息。

您能否澄清,当所有记录都有2014年的日期值时,为什么只考虑记录6、5和2?多维数据集中的层次结构、维度和度量是什么?@vmachan-每个客户的最大日期,我guess@vmachan很抱歉延迟回复,我没有收到人们在我的帖子中评论的通知。对于这个平台来说还是新的——为了回答您的第一个问题,从我的样本数据来看,2014年有3个不同的客户,记录ID 6,5和2分别对应于客户ID 1,3和2的最大日期。@SouravA,我们使用的日期维度是([year]->[quarter]->[month]->[Date]和[year]->[month]->[Date])等级制度。没有层次结构的客户维度,有两个层次结构的位置维度([state]->[city]->[store\u location\u id]和[geography cardinality]->[store\u location\u id])。除了加权客户之外,我们还有总和(权重)作为衡量标准。有一些度量列未包含在样本数据中,我们将其汇总为度量值,如支出、税收、数量等。感谢您的建议。对于多维数据集中的数据集,计算过程非常缓慢。我想知道是否有一种方法可以让一些预处理提前进行。是否存在使流程以O(Num_Customer_id*Num_Dates)形式计算的Generate函数。请你把你的立方体结构和关系写下来好吗。这将有助于我给出一个更好的答案。屏幕截图就可以了。我不知道如何在我的手机上上传图像到这个界面。谢谢回复。无法确定如何在我的手机上将图像上载到此界面。基本上,这是一个简单的星型模式,在位置表中有大约500个条目,在客户表中有500万个条目,在事实表中有大约2500万个条目,对应于大约350万个不同的客户。我已经包括了所有的尺寸键。我倾向于认为,在日期维度和客户维度之外,最终维度即位置不会影响加权_客户的主要计算。只是澄清一下,他们是在2014年交易的350万不同客户。