我努力做到这一点,精疲力尽,无法找到它,所以我会在这里尝试运气。
我有两个表,第一个表包含我为带日期的产品支付的费用。第二个是我的销售情况,其中包含我所销售产品的代码,销售日期和销售价格。
它们看起来像下面的两个:
表A-费用
CODE DATE COSTPAID
A 02/07/2020 $2,50
B 19/07/2020 $12,50
B 10/08/2020 $13,50
A 26/08/2020 $3
表B-销售
CODE DATE PRICESOLD
A 05/07/2020 $5
A 28/08/2020 $5
B 25/07/2020 $25
B 16/08/2020 $25
我想要一个度量或一个列,该度量或列可以让我根据销售日期支付的上一次费用,例如以下SALES表中的示例:
CODE DATE PRICESOLD COSTPAID
A 05/07/2020 $5 $2,5
A 28/08/2020 $5 $3
B 25/07/2020 $25 $12,5
B 16/08/2020 $25 $13,5
离我最近的是用以下代码编写一列,但它溢出了:
LASTCOSTPAID =
CALCULATE (
MAX ( COSTS[DATE] ),
FILTER ( COSTS, COSTS[DATE] <= SALES[DATE] && COSTS[CODE] = SALES[CODE] )
)
您能给我的任何帮助都会有很大帮助。
提前谢谢! :)
答案 0 :(得分:0)
您越来越近了。您首先需要检索销售日期之前的成本日期。找到该lastCostDate之后,您可以再次过滤该表。
LastCostPaid =
var curCode = Sales[CODE]
var curDate = Sales[DATE]
var lastCostDate = CALCULATE(MAX(Cost[DATE]), FILTER(Cost, curDate >= Cost[DATE] && curCode = Cost[CODE]))
return CALCULATE(SELECTEDVALUE(Cost[COSTPAID]), FILTER(Cost, curCode = Cost[CODE] && lastCostDate = Cost[DATE]))
答案 1 :(得分:0)
您发布的代码中的主要问题是,获取日期而不是花费。
要处理同一天发现多个价格的情况,我们可以使用MAX获得当天的最高价格。要查找最后一天,我们可以在CALCULATETABLE内使用LASTDATE函数来更改过滤器竞赛,使其仅包含直到当前SALES [DATE]的日期。然后,我们还需要对产品CODE进行过滤。
LASTCOSTPAID =
CALCULATE(
MAX( COSTS[COSTPAID] ),
COSTS[CODE] = SALES[CODE],
CALCULATETABLE(
LASTDATE( COSTS[DATE] ),
COSTS[DATE] <= SALES[DATE]
)
)