首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >客户在DAX中的QoQ更改

客户在DAX中的QoQ更改
EN

Stack Overflow用户
提问于 2019-10-24 06:03:09
回答 1查看 161关注 0票数 0

我想创建一个DAX公式来计算客户在不同时期的增加和减少。以下是我所拥有的数据示例

代码语言:javascript
复制
Year-Quarter|Customer|Credit-Limit
2019Q2|A|50
2019Q2|B|100
2019Q2|C|100
2019Q2|D|200
2019Q2|E|1000
2019Q2|F|200
2019Q3|A|50
2019Q3|B|200
2019Q3|C|100
2019Q3|D|50
2019Q3|E|500
2019Q3|F|300

我希望创建一个按年-季度汇总显示客户的数量,有增加/减少/没有他们的信用额度。请注意,这只是一个示例,实际数据大于10M行。因此,即使我可以创建另一个表,我认为从计算的角度来看,度量会更有用

所需输出:

评论如下:“有2个客户在2019Q3增加了信用额度。”

到目前为止已经完成了:

代码语言:javascript
复制
Prev Quarter Credit Limit = 
VAR CurrentYearQuarter = MAX(Sheet1[Year-Quarter])
VAR Quarter_Year =
    LEFT (CurrentYearQuarter, 4)
VAR Quarter_period =
    RIGHT (CurrentYearQuarter, 1 )
RETURN
    IF (
            Quarter_period = "1",
            CALCULATE (
                SUM ( Sheet1[Credit Limit] ),
               Sheet1[Year-Quarter]
                    = ( Quarter_Year - 1 )

                    & "Q"
                    & ( Quarter_period + 3 )
            ),
            CALCULATE (
                SUM ( Sheet1[Credit Limit] ),
                Sheet1[Year-Quarter]
                    = Quarter_Year 
                    & "Q"
                    & Quarter_period - 1
            )
        ) 

Inc/Dec = IF(SUM(Sheet1[Credit Limit]) - [Prev Quarter Credit Limit] > 0,"Inc",
 IF(SUM(Sheet1[Credit Limit]) - [Prev Quarter Credit Limit] < 0,"Dec","None"))

Commentary = "There are " &
CALCULATE(DISTINCTCOUNT(Sheet1[Customer]), 
FILTER(Sheet1, [Inc/Dec] = "Inc" && Sheet1[Year-Quarter] = "2019Q3"))

当前输出:

评论:“有4个”

我不确定为什么我会得到4,而这里的数字是2。如能给予帮助或指导,我们将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2019-10-25 14:41:23

出于实验目的,我稍微修改了输入数据,我添加了

代码语言:javascript
复制
2018Q3 | A | 200
2018Q4 | A | 50
2019Q1 | A | 50

我添加了一个季度日历(这是一个使用VALUES(Sheet1[Year-Quarter])的计算表

然后向这个新表添加更多列,使用LEFTRIGHT提取当前年份和季度,然后计算上一季度和上一年,并合并为Prevoius- year -Quarter列:

]

使用这个Q-Calendar,我在Year-Quarter和Year-Quarter之间创建了一个Sheet1表的1:*关系,然后在上一年-季度和Year-Quarter之间创建了第二个非活动的1:*关系,如下所示:

然后,我创建了两个度量,一个用于上一季度的信用总额,另一个用于当前季度的信用:

代码语言:javascript
复制
Current-Quater CL = 
var currentQ = MAX('Q-Calendar'[Year-Quarter])
var tempTable = 
FILTER(
    ALL('Q-Calendar');
    'Q-Calendar'[Year-Quarter] = currentQ
)

return
CALCULATE(
    SUM('Sheet1'[Credit-Limit ]);
    tempTable
)

在前一个季度的CL度量中,我使用USERELATIONSHIP来激活我从Q-Calendar添加的被动关系。

代码语言:javascript
复制
Prev-Quater CL = 
var currentQ = MAX('Q-Calendar'[Year-Quarter])
var tempTable = 
FILTER(
    ALL('Q-Calendar');
    'Q-Calendar'[Year-Quarter] = currentQ
)

return
CALCULATE(
    SUM('Sheet1'[Credit-Limit ]);
    tempTable;
    USERELATIONSHIP('Sheet1'[Year-Quarter]; 'Q-Calendar'[Previous-Year-Quarter])
)

然后像这样创建Inc/Dec度量值:

代码语言:javascript
复制
Increase/Decrease = 
var temp = [Current-Quater CL]-[Prev-Quater CL]

return
SWITCH(
    TRUE();
    temp > 0; "Increase";
    temp < 0; "Decrease";
    "No change"
)

并最终创建了一个新的(实际上是3个新的)评论措施,如下所示:

代码语言:javascript
复制
Commentary_2 = "There are " &
var customers = VALUES(Sheet1[Customer])

return
SUMX(
    customers;
    CALCULATE(
        IF(
            [Current-Quater CL]-[Prev-Quater CL] > 0;
            1;
            0
        )
    )
)&" customers how have increased their credit"

使用Q-calendar中的年份-季度列作为切片器,我可以获得当前状态,并可以选择上一个季度来查看当时的状态:

注:我的度量中的代码可以进行优化,我只是将它们保持得如此详细,以使其更容易理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58531549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档