Процент изменения с двумя срезами данных в Power BI

У меня есть сценарий с двумя срезами данных. Первый срез данных фильтрует данные за один период, второй - за другой период. Редактируя визуальные взаимодействия, я добился того, что это работает на той же странице. Теперь я хочу сравнить два результирующих значения (в данном случае количество транзакций и найти процент изменения между двумя выбранными периодами.

Я продублировал столбец данных, поэтому у меня есть два столбца даты для каждого среза, и я вычислил следующие меры:

# of Transactions 1 = CALCULATE(COUNT(Report[ProductID]),DATESBETWEEN(Report[Date1],[Start Date 1],[Last Date 1]))
# of Transactions 2 = CALCULATE(COUNT(Report[ProductID]),DATESBETWEEN(Report[Date2],[Start Date 2],[Last Date 2]))
% Transaction Change = ([# of Transactions 1]/[# of Transactions 2]) - 1

Первые 2 показателя точны (количество транзакций 1 и 2), но процент изменения не работает. Если вы посмотрите на снимок экрана ниже, вы увидите, что количество транзакций 1 = 1990 и количество транзакций 2 = 2787. Сейчас я хочу сравнить эти 2 значения.

Как я могу это решить?

введите здесь описание изображения

Спасибо.


person Laki    schedule 14.09.2018    source источник
comment
Как это не работает? Какой результат вы получите и какой ответ ожидаете?   -  person Marco Vos    schedule 14.09.2018
comment
Да как не работает? Я бы предложил вместо использования двух столбцов даты с использованием двух таблиц дат, это было бы намного эффективнее для больших наборов данных, и было бы намного проще создавать меры против и легче читать.   -  person StelioK    schedule 14.09.2018


Ответы (1)


Сначала создайте две меры для границ даты:

Min Date :=
MIN ( 'Report'[Date] )
Max Date :=
MAX ( 'Report'[Date] )

Затем создайте таблицу дат, используя следующий DAX, она присоединится к вашей таблице «Отчет» на основную дату:

Dates :=
VAR MinDate = [Min Date]
VAR MaxDate = [Max Date]
VAR BaseCalendar =
    CALENDAR ( MinDate, MaxDate )
RETURN
    GENERATE (
        BaseCalendar,
        VAR BaseDate = [Date]
        VAR YearDate =
            YEAR ( BaseDate )
        VAR MonthNumber =
            MONTH ( BaseDate )
        VAR YrMonth =
            100 * YEAR ( BaseDate )
                + MONTH ( BaseDate )
        VAR Qtr =
            CONCATENATE ( "Q", CEILING ( MONTH ( BaseDate ) / 3, 1 ) )
        VAR YrMonthQtr =
            100 * YEAR ( BaseDate )
                + MONTH ( BaseDate )
                & CONCATENATE ( "Q", CEILING ( MONTH ( BaseDate ) / 3, 1 ) )
        VAR YrMonthQtrDay =
            100 * YEAR ( BaseDate )
                + MONTH ( BaseDate )
                & CONCATENATE ( "Q", CEILING ( MONTH ( BaseDate ) / 3, 1 ) )
                & DAY ( BaseDate )
        RETURN
            ROW (
                "Day", BaseDate,
                "Year", YearDate,
                "Month Number", MonthNumber,
                "Month", FORMAT ( BaseDate, "mmmm" ),
                "Year Month", FORMAT ( BaseDate, "mmm yy" ),
                "YrMonth", YrMonth,
                "Qtr", Qtr,
                "YrMonthQtr", YrMonthQtr,
                "YrMonthQtrday", YrMonthQtrDay
            )
    )

Теперь создайте другую таблицу дат для сравнения, присоединитесь к вашей основной таблице дат в «Отчет» и убедитесь, что связь неактивна:

Compare Dates :=
ALLNOBLANKROW ( 'Dates' )

Теперь создайте меру [# транзакции]; один для "Даты", а другой для "Сравнить даты", например:

[# of Transaction 1] :=
CALCULATE (
    COUNT ( Report[ProductID] )
)

[# of Transaction 2] :=
CALCULATE (
    [# of transaction 1],
    ALL ( 'Dates' ),
    USERELATIONSHIP ( 'Compare Dates'[Date], 'Report'[Date] )
)

Теперь создайте меру% Delta:

Transaction Change := CALCULATE(DIVIDE([# of Transactions 1],[# of Transactions 2]) - 1)

Это должно работать как шарм и будет работать для любых дат, выбранных в ваших срезах, вам все равно нужно будет связать срезы даты с вашими новыми таблицами дат.

Надеюсь, это поможет!!

person StelioK    schedule 14.09.2018
comment
Это действительно работает как шарм. Большое спасибо! Я до сих пор не понимаю, почему мое решение (показанное выше) не работает. Прикреплю завтра файл .pbix, так что можете посмотреть, если хотите. - person Laki; 15.09.2018
comment
@Laki Я рада, что у тебя все получилось! Отправьте мне .pbix, и я посмотрю. Хороших выходных!! - person StelioK; 15.09.2018
comment
Еще раз спасибо. Это то, что я пытался сделать вначале, как я объяснил в сообщении выше, но безуспешно (файл pbix загружен в GDrive): drive.google.com/open?id=1IUJA4c9-HvD68FzUJfU7B5xhYtkDhI0u Лучшее - person Laki; 16.09.2018