根据运行总计对子样本进行分析

时间:2018-10-26 09:20:13

标签: ssas dax

我是DAX的新手,但有一个我不知道如何解决的问题。我用一个人工的例子来简化它。我正在使用SSAS表格模型。

比方说,我有一家“ zirkbols”工厂(已发明)和一张代表zirkbols销售的表格。每个客户购买了不同数量的zirkbols,并给了1到5级。 该表如下所示:

Sample data

使用以下代码生成它:

= DATATABLE(
    "ClientId"; INTEGER; 
    "CountryCode"; STRING;
    "OrderDate"; DATETIME;
    "OrderAmount"; DOUBLE;
    "Rating"; INTEGER;
    {
        {123; "US"; "2018-01-01"; 502; 1};
        {124; "US"; "2018-01-01"; 400; 4};
        {125; "US"; "2018-01-03"; 60; 5};
        {126; "US"; "2018-01-02"; 160; 4};
        {124; "US"; "2018-01-05"; 210; 3};
        {128; "JP"; "2018-01-03"; 22; 5};
        {129; "JP"; "2018-01-07"; 540; 2};
        {130; "JP"; "2018-01-03"; 350; 4};
        {131; "JP"; "2018-01-09"; 405; 4};
        {132; "JP"; "2018-01-09"; 85; 5}
    }
)

我需要制定措施,为购买了我30%的销售额(最满意的客户)的客户样本提供统计数据。这意味着我需要按“评级”进行排名,并对“ OrderAmounts”求和,直到获得至少30%的总和。这个样本是我快乐的Zirkbols所有者。对于这些快乐的Zirkbols所有者,我想知道例如他们的平均评分。

我认为,如果我可以将订单金额的累计总额放入计算列中,这可能会更容易,但是我想让分析师可以仅过滤“美国”销售额,而我不不知道在计算列中是否可行。 另一方面,我认为按等级的排名可以存储在计算列中(排名= RANK.EQ([Rating]; ClientOrders [Rating]))。

我希望得到以下结果:

Result

正如我所说的,我是SSAS和DAX的新手,所以我不知道我是否从错误的角度解决了这个问题...

关于, 尼古拉

P.S。请同时查看已接受答案的评论

1 个答案:

答案 0 :(得分:1)

我有一些DAX可以正常工作,但是我需要回到它上面。

同时,下面是一些代码:

Happy owners amount =
VAR Summary =
    SUMMARIZE (
        Orders,
        Orders[CountryCode],
        Orders[ClientId],
        Orders[Rating],
        "Amount", SUM ( Orders[OrderAmount] )
    )
VAR Ranked =
    ADDCOLUMNS ( Summary, "Rank", RANKX ( Summary, Orders[Rating] + 1 / [Amount] ) )
VAR Cumulative =
    ADDCOLUMNS (
        Ranked,
        "CumAmt", CALCULATE (
            SUM ( Orders[OrderAmount] ),
            FILTER ( Ranked, [Rank] <= EARLIER ( [Rank] ) )
        )
    )
VAR CutOff =
    MINX (
        FILTER (
            Cumulative,
            [CumAmt]
                > 0.3 * CALCULATE ( SUM ( Orders[OrderAmount] ), ALLSELECTED ( Orders ) )
        ),
        [Rank]
    )
RETURN
    SUMX ( FILTER ( Cumulative, [Rank] <= CutOff ), [Amount] )