Power BI中2个数据切片器的更改百分比

时间:2018-09-14 11:03:14

标签: powerbi dax powerquery powerbi-desktop

我有一个带有两个数据切片器的方案。第一个数据限幅器过滤一个周期的数据,第二个数据限幅器过滤另一个周期的数据。通过编辑视觉交互,我可以在同一页面上工作。 现在,我想比较两个结果值(在这种情况下,是交易数,并找到两个选定期间之间的变化百分比。

我复制了数据列,所以每个切片器都有两个日期列,并计算了下一个度量:

# 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的数量),但是%的更改无效。 如果您看下面的屏幕截图,您会看到#od Transactions 1 = 1,990和#of Transactions 2 = 2,787。我现在想比较这两个值。

我该如何解决?

enter image description here

谢谢。

1 个答案:

答案 0 :(得分: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)

这应该像超级按钮一样工作,并且适用于切片器中选择的任何日期,您仍然需要将日期切片器与新的日期表相关联。

我希望这会有所帮助!