QoQ изменения Клиента в DAX - PullRequest
0 голосов
/ 24 октября 2019

Я хотел бы создать формулу DAX для расчета увеличения и уменьшения клиентов за периоды. Ниже приведен пример данных, которые у меня есть

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 "

Готово до сих пор:

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, как число здесь. Помощь или руководство будет очень признателен

1 Ответ

0 голосов
/ 25 октября 2019

Я немного изменил входные данные для экспериментальных целей, я добавил

2018Q3 | A | 200
2018Q4 | A | 50
2019Q1 | A | 50

Я добавил Quarter-Calendar (который является вычисляемой таблицей с использованием VALUES(Sheet1[Year-Quarter])

Затем, добавив дополнительные столбцы в эту новую таблицу, извлекая текущий год и квартал, используя LEFT и RIGHT, затем вычисляя предыдущий квартал, предыдущий год и объединяя в столбец Prevoius-Year-Quarter:

enter image description here]

Используя этот Q-Calendar, я создаю отношение 1: * к таблице Sheet1 между [Year-Quarter] и [Year-Quarter], затем я создаю второй неактивный 1: *отношения между [Предыдущий год-квартал] и [Год-квартал] примерно так:

enter image description here

Затем я создаю две меры: одну для суммы кредита предыдущего квартала и одну для текущегоквартальный кредит:

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.

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 мера, как это:

Increase/Decrease = 
var temp = [Current-Quater CL]-[Prev-Quater CL]

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

И, наконец, создали новые (на самом деле 3 новых) комментария меры, как это:

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"

Используя столбец Year-Quarter из Q-календаря в качестве среза, я получаю текущий статус и могу выбратьпредыдущий квартал, чтобы увидеть статус в то время:

enter image description here

enter image description here

Примечание: код в моих мерах может быть оптимизирован, я просто сохранил их какподробный, чтобы сделать его более понятным.

...