如何根据1周前的计算进行额外测量?

问题描述 投票:0回答:1

我已经完成了这张图表,计算了今天和上周的收入。

开关参数:

Parameter = 
{
    ("Last week", NAMEOF('Order_dates'[Datetime]), 0),
    ("Last day", NAMEOF('Order_dates'[Time]), 1)
}

计算测量(工作正常):

_revenue = 
VAR _today = TODAY()
VAR _last_day = 
CALCULATE(
    sum('Sells'[Revenue]),
    KEEPFILTERS(
        DATESINPERIOD(
            '_calendar'[Date],
            TODAY(), 
            -1, 
            DAY)
    )
)
VAR _last_week =
CALCULATE(
    sum('Sells'[Revenue]),
    KEEPFILTERS(
        DATESINPERIOD(
            '_calendar'[Date],
            TODAY(),
            -7,
            DAY)
    )
)
RETURN
SWITCH(
    TRUE(),
    ISINSCOPE('Order_dates'[Datetime]), _last_week,
    ISINSCOPE('Oreder_dates'[Time]), _last_day
)

型号:

日历:

我尝试过使用关系(Order_dates [Date],_calendar [prev_week_for_plot]),prev_week_for_plot将日期移了7天(如果需要,请检查日历)。 我之前在 SQL 查询中使用过该逻辑,它确实有效。

但我仍然得到错误的结果。

_week_ago = 
VAR _today = TODAY()
VAR _time_shift = 7
VAR _last_day = 
CALCULATE(
    sum('Sells'[Revenue]),
    KEEPFILTERS(
        DATESINPERIOD(
            _calendar[prev_week_for_plot],
            TODAY() - _time_shift, 
            -1, 
            DAY)
    ),
    USERELATIONSHIP(Order_dates[Date], _calendar[prev_week_for_plot])
)
VAR _last_week =
CALCULATE(
    sum('Sells'[Revenue]),
    KEEPFILTERS(
        DATESINPERIOD(
            _calendar[prev_week_for_plot],
            TODAY() - _time_shift,
            -7,
            DAY)
    ),
    USERELATIONSHIP(Order_dates[Date], _calendar[prev_week_for_plot])
)
RETURN
SWITCH(
    TRUE(),
    ISINSCOPE('Order_dates'[Datetime]), _last_week,
    ISINSCOPE('Order_dates'[Time]), _last_day
)

结果:

我通过最后一天的计算得到了正确的结果。

我必须将上周的值移至图表右侧。

powerbi dax
1个回答
0
投票

我发现我做错了。 首先,我将下一天/下一周的日期添加到 Order_dates。

参数:

Parameter = 
{
    ("Last week", NAMEOF(_calendar[Date]), 0),
    ("Last day", NAMEOF(_time[Time]), 1)
}

更正数据模型:

并以我的衡量正确的用户关系和切换:

_prev_day = 
VAR _today = TODAY()
VAR _time_shift = 0
VAR _last_day = 
CALCULATE(
    sum('Sells'[Revenue]),
    KEEPFILTERS(
        DATESINPERIOD(
            _calendar[Date],
            TODAY() - _time_shift, 
            -1, 
            DAY)
    ),
    USERELATIONSHIP(_calendar[Date], Order_dates[next_day_date])
)
VAR _last_week =
CALCULATE(
    sum('Sells'[Revenue]),
    KEEPFILTERS(
        DATESINPERIOD(
            _calendar[Date],
            TODAY() - _time_shift,
            -7,
            DAY)
    ),
    USERELATIONSHIP(_calendar[Date], Order_dates[next_day_date])
)
RETURN
SWITCH(
    TRUE(),
    ISINSCOPE(_calendar[Date]), _last_week,
    ISINSCOPE(_time[Time]), _last_day
)

结果:

© www.soinside.com 2019 - 2024. All rights reserved.