我需要更正数量,即如果该天是可用数据集的第一天,则取上个月该数据集中最后一天的数量。
我正在研究:
1.在可用数据集中我指示月初的位置添加了2 col;在第二列中,我在可用数据集中指出该月的最后一天。
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]
)
答案 0 :(得分:1)
不确定我是否理解这一点,但我认为您只需要在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]
)
结果表:
答案 1 :(得分:1)
您非常接近,我在if中更正了比较,并使用了Sum,因为我知道过滤器中只有一行。请注意,当数据中存在空白时,逻辑将无法正常工作。例如1月31日不见了。.
quantity_corrected =
var tdate = 'tbl'[prev_month_end]
var warehouse2 = tbl[warehouse_code]
var prod_cat = tbl[prod_category]
var prod_typ = tbl[product_type]
var base_filter = FILTER(tbl; prod_cat = tbl[prod_category] && prod_typ = tbl[product_type] && warehouse2 = tbl[warehouse_code])
return
if (tbl[date] - 1 = tdate;
CALCULATE(SUM(tbl[quantity]);FILTER(base_filter;tbl[date] = tdate));
tbl[quantity])