首页 > 解决方案 > 如果该月的第一天取该月最后一天的值 - Power BI

问题描述

我有以下数据集: 在此处输入图像描述

我需要更正数量,即如果当天是可用数据集的第一天,则取上个月该数据集中最后一天的数量。

在此处输入图像描述

我正在处理:
1. 在可用数据集中添加了 2 列,我在其中指示月份的开始;在第二列中,我在可用数据集中表示该月的最后一天。

  1. 然后,我创建了一个度量,其想法是检查 [date] 是否等于 [start_date]。如果是,我想从 [prev_month_end] 返回 [quantity]。否则,返回当前日期的 [数量]。我觉得我很接近,但没有得到想要的结果.po
start_date = STARTOFMONTH('tbl'[date])
prev_month_end= LASTDATE ( PREVIOUSMONTH ( 'tbl'[date] ))
quantity_corrected = 
var tdate = 'tbl'[prev_month_end]
var warehouse = 'tbl'[warehouse_code]
var prod_cat = 'tbl'[product_category]
var prod_typ = 'tbl'[product_type]

return
if(
    'tbl'[date]='tbl'[start_date],
    CALCULATE(
        FIRSTNONBLANK('tbl'[quantity],1),
        FILTER(
            ALL('tbl'), 
            'tbl'[product_category]=prod_cat && 
            'tbl'[prev_month_end] = tdate && 
            'tbl'[warehouse_code]=warehouse && 
            'tbl'[product_type]=prod_typ
        )
    ),
    'tbl'[quantity]
)

标签: powerbi

解决方案


不完全确定我理解这一点,但我认为您只需更改 FILTER 函数中的一个参数。
另外,我添加了第二个嵌套的 IF 语句(带有temp变量),否则第一行将[quantity_corected]变为空白。

quantity_corrected = 
var tdate = 'tbl'[prev_month_end]
var warehouse = 'tbl'[warehouse_code]
var prod_cat = 'tbl'[prod_category]
var prod_typ = 'tbl'[product_type]

return
if(
    'tbl'[date]='tbl'[start_date];
    var temp =
    CALCULATE(
        FIRSTNONBLANK('tbl'[quantity];1);
        FILTER(
            ALL('tbl');
            'tbl'[prod_category]=prod_cat && 
            'tbl'[date] = tdate &&  // <-- Changed from [prev_month_end]
            'tbl'[warehouse_code]=warehouse && 
            'tbl'[product_type]=prod_typ
        )
    )
    return
    IF(
        temp <> BLANK();
        temp;
        'tbl'[quantity]
    );
    'tbl'[quantity]
)

结果表:

在此处输入图像描述


推荐阅读