powerbi - DAX:从最旧的清算逾期的计算
问题描述
让我们假设客户随着时间的推移收到了一些发票。这些发票的金额在报告中累积在某些组中,例如 0 天、1-30 天、31-60 天、61-120 天、>120 天,具体取决于其付款条件。现在客户已经支付了 X 金额来支付他的部分或全部余额。
我正在寻找计算以清除客户从最旧的发票开始支付的金额的余额。
数据存储在从 SAP 加载的表中。我只有带有客户详细信息的字段,他的帐户余额按键值对中的期间以及贷方或借方的指示符
[客户] [期间] [金额] [贷方/借方]
解决方案
好的,我已经设法解决了,方法如下:
我创建了一个包含老化期的表,因为其中一部分是重叠的(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] ) )
)
)
)
推荐阅读
- java - 从旧的二维数组中删除 null 并将非 null 元素放入新的二维数组中
- python - 用于二元分类 CNN 的 Tensor Flow Conv1D
- ios - Nativescript如何在屏幕底部隐藏标签栏
- python - 使用 Python 调整大小重命名和旋转多个图像
- javascript - 比较今天日期和 ES6 ReactJS 中的保留日期
- odbc - MonetDB Mapi 库数据插入
- r - R中重复的k-fold CV循环以捕获指标
- javascript - 如何在 javascript 和 jquery 中隐藏数据表显示条目?
- android - 通话录音在 Android 10 中是否可用?
- node.js - 使用 javascript 从 web 客户端访问 Hyperledger Fabric 2.0 中的私钥?