我有一个DAX度量来汇总余额变化,除非期初和期末值都存在,否则我需要它来排除数据。
以下是一些示例数据。当汇总到YYYY-MM级别时,如果开局和闭局Bal同时存在,我只想包括一行。在Excel中,如果缺少值,则通过返回NA()来实现。
如何在DAX中实现相同目标?这是我到目前为止创建的度量:
Closing Balance:= CALCULATE(SUM('Table'[Balance]), LASTDATE('Date'[Date]))
Opening Balance:= CALCULATE(SUM('Table'[Balance]), (DATEADD(FIRSTDATE('Date'[Date]),-1,DAY)))
Balance Change := [Closing Balance] - [Opening Balance]
您需要按所需的粒度进行迭代(我假设是“年月+帐户”)。在每次迭代期间,测试是否存在余额。例如,假设您在连接到主表的维表“科目表”中有科目:
Balance Change =
SUMX (
SUMMARIZE ( 'Table', 'Chart of Accounts'[Account], 'Date'[YYYY-MM] ),
VAR Opening_Balance = [Opening Balance]
VAR Closing_Balance = [Closing Balance]
RETURN
IF ( Closing_Balance && Opening_Balance, Closing_Balance - Opening_Balance )
)
这里,我们使用SUMMARIZE创建一个包含'YYYY-MM'和Accounts的虚拟表。然后,我们使用SUMX逐条记录对该表记录进行迭代。对于每个年度月份和科目,我们计算期初和期末余额。然后,我们测试它们是否为零或空白,并返回差值。