首页 > 解决方案 > DAX:从最旧的清算逾期的计算

问题描述

让我们假设客户随着时间的推移收到了一些发票。这些发票的金额在报告中累积在某些组中,例如 0 天、1-30 天、31-60 天、61-120 天、>120 天,具体取决于其付款条件。现在客户已经支付了 X 金额来支付他的部分或全部余额。

我正在寻找计算以清除客户从最旧的发票开始支付的金额的余额。

数据存储在从 SAP 加载的表中。我只有带有客户详细信息的字段,他的帐户余额按键值对中的期间以及贷方或借方的指示符

[客户] [期间] [金额] [贷方/借方]

标签: powerbidaxpowerbi-desktop

解决方案


好的,我已经设法解决了,方法如下:

我创建了一个包含老化期的表,因为其中一部分是重叠的(1-30 天和 1-5 天、6-16 天等),我添加了两列来排序和排除重叠期:[订单 1] 和 [订单 2]。

决赛桌视图

然后我创建了一个度量“帐户余额清算”,其中包括:

计算整个日期范围内总借方的变量:

VAR Debit = CALCULATE(
        SUM( 'AR Ageing Analysis'[Value] ),
        'AR Ageing Analysis'[Debit/Credit Indicator.Debit/Credit Indicator Level 01] = "H",
        FILTER(
            ALL( 'Aging periods' ),
            NOT( ISBLANK( 'Aging periods'[order 1] ) )
        )
    )

CREDIT/DEBIT INDICATOR = "H"只寻找负余额,因为在源数据中,正负余额在同一个表中,按这些期间划分,H 表示负数,“S”表示正数。

另一个变量用于计算当前选定期间或更早期间的正余额:

VAR Credit = CALCULATE(
        SUM( 'AR Ageing Analysis'[Value] ),
        FILTER(
            ALL( 'AR Ageing Analysis'[Attribute], 'AR Ageing Analysis'[Debit/Credit Indicator.Debit/Credit Indicator Level 01] ),
            'AR Ageing Analysis'[Debit/Credit Indicator.Debit/Credit Indicator Level 01] = "s"
        ),
        FILTER(
            ALL( 'Aging periods' ),
            'Aging periods'[order 1] <= SELECTEDVALUE( 'Aging periods'[order 1] ) &&
            NOT( ISBLANK( 'Aging periods'[order 1] ) )
        )
    )

另一个只是将它们相加:

VAR Balance = Credit + Debit

要最终在期间和适当的总计中返回清算余额:

RETURN 

IF(
    HASONEVALUE( 'Aging periods'[Value] ),
    IF( Balance < 0, 0, Balance ),
    CALCULATE(
        SUM( 'AR Ageing Analysis'[Value] ),
        FILTER(
            ALL( 'Aging periods' ),
            NOT( ISBLANK( 'Aging periods'[order 1] ) )
        )
    )
)

推荐阅读