根据销售日期获得我支付的费用

时间:2020-10-02 12:58:52

标签: powerbi dax

我努力做到这一点,精疲力尽,无法找到它,所以我会在这里尝试运气。

我有两个表,第一个表包含我为带日期的产品支付的费用。第二个是我的销售情况,其中包含我所销售产品的代码,销售日期和销售价格。

它们看起来像下面的两个:

表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] )
)

您能给我的任何帮助都会有很大帮助。

提前谢谢! :)

2 个答案:

答案 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]
        )
    )
相关问题