【问题标题】:Get the cost I paid based on the date of sale with a measure获取我根据销售日期支付的费用
【发布时间】:2020-10-05 05:52:14
【问题描述】:

我努力完成这项工作,筋疲力尽地寻找并找不到它,所以我会在这里碰碰运气。

我有两张表,第一张包含我为产品支付的费用以及日期。第二个是我的销售记录,包括我销售的产品代码、销售日期和销售价格。

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

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

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

提前致谢! :)

【问题讨论】:

标签: powerbi dax


【解决方案1】:

你在哪里接近。您首先需要检索销售前日期的成本日期。找到这个 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]))

【讨论】:

    【解决方案2】:

    您发布的代码中的主要问题是,您得到的不是成本,而是日期。

    为了处理同一天发现多个价格的情况,我们可以使用 MAX 来获取当天的最高价格。要查找最后一天,我们可以使用 CALCULATETABLE 中的 LASTDATE 函数来更改过滤器竞赛以仅包含截至当前 SALES[DATE] 的日期。然后我们还需要对产品代码进行过滤。

    LASTCOSTPAID =
        CALCULATE(
            MAX( COSTS[COSTPAID] ),
            COSTS[CODE] = SALES[CODE],
            CALCULATETABLE(
                LASTDATE( COSTS[DATE] ),
                COSTS[DATE] <= SALES[DATE]
            )
        )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2020-07-22
      • 2011-06-10
      • 2012-06-21
      • 2015-11-11
      • 1970-01-01
      相关资源
      最近更新 更多