POWER BI - 递归计算我的 dax 度量的解决方法?

Posted

技术标签:

【中文标题】POWER BI - 递归计算我的 dax 度量的解决方法?【英文标题】:POWER BI - workaround possible for recursive calculation of my dax measure? 【发布时间】:2020-09-21 10:23:47 【问题描述】:

我有 2 个关于订单的表格,其中包含订单有效日期和在途库存(库存到达订单将被服务的地方)。

(使用样本数据来简化理解) 我正在我的决赛桌中寻找这样的最终计算 -

已完成计算,直到 power BI 中的第 4 列

如果这是在excel中,我可以简单地完成

used_stock(2) = serviced(1) + used_stock(1)

avail_stock(2) = total_qty(2) - used_stock(2)

已服务(2) = min(order(2),avail_stock(2))

我的基表如下所示 - 

订单表-

中转表-

我已通过查找所选订单有效日期值之前日期的发货数量的累积总和来完成 total_qty 度量计算。

我正在尝试执行其余的措施,但最终以循环引用告终。有什么办法可以吗?

编辑 -

为所需的逻辑再澄清一点 -

假设第二个订单是 15 号,第二批货在 24 号到达,那么基础数据和输出表应该是这样的 -

使用目前提出的解决方案,表格将错误地看起来像 -

【问题讨论】:

【参考方案1】:

尝试以下这些措施-

total_qty = 

VAR current_row_date = MIN('order'[order valid till date])

RETURN
CALCULATE(
    SUM(intrasit[quantity in shipment]),
    FILTER(
        ALL(intrasit),
        intrasit[expected date of reaching] < current_row_date
    )
)
used_stock = 

VAR current_row_date = MIN('order'[order valid till date])

RETURN
CALCULATE(
    SUM('order'[order quantity]),
    FILTER(
        ALL('order'),
        'order'[order valid till date] < current_row_date
    )
) + 0
avail_stock = [total_qty] - [used_stock]
serviced = 
IF(
    MIN('order'[order quantity]) <= [avail_stock],
    MIN('order'[order quantity]),
    [avail_stock]
)

这是你的最终输出-

【讨论】:

感谢您的回复,但使用的库存不应该是服务的总和而不是订单的总和。我做了一些非常相似的事情,但是在二手库存中,我取了 min(order,avail_stock) 的总和,这导致了循环依赖。基本上,如果第二个订单是 25 而不是 15,它将在第三排提供 35 个二手库存,实际上应该仍然是 30。这很重要,因为如果新的货物在 9 月 24 日到达,假设 20 个单位,可用库存将变为50-35 而不是 50-30,这可能会导致错误的服务结果。 用解释逻辑更新你需要的输出。 嘿,已对帖子进行了更新,请检查。真的希望你能帮帮我。 正如你所说的使用过的库存应该是服务的总和,这会创建一个循环依赖,就像一个度量依赖于另一个尚未创建的度量一样。您可以再次检查您的逻辑。我现在也在检查你更新的问题。 您的“二手库存”取决于“服务”,而“服务”取决于“二手库存” - 这是无法计算的,这是属于循环依赖的问题:(

以上是关于POWER BI - 递归计算我的 dax 度量的解决方法?的主要内容,如果未能解决你的问题,请参考以下文章

Power BI DAX 度量计算

数据可视化之DAX篇(二十六)Power BI度量值:滚动聚合

数据可视化之DAX篇(二十八)Power BI时间序列分析用到的度量值,一次全给你

数据可视化之DAX篇(二十七)半累加度量,在Power BI 中轻松处理

数据可视化之DAX篇Power BI度量值不能作为坐标轴?这个解决思路送给你

power bi度量值怎么写?有啥方法吗,求教程!