DAX 模型发票 运行 余额

DAX model invoice running balance

我有一个 table 发票和一个 table 付款。发票 table 由发票编号、金额、发票日期、到期日期组成。付款 table 包括发票编号、金额、付款日期。发票 table 与到期日期列中的日期 table 有有效关系。付款 table 与发票 ID 列上的发票 table 有有效关系。

我希望能够显示任意一天的发票余额。也就是说,如果我在特定日期过滤报告或页面,我想查看每张发票当天的实际余额。任何人都知道如何在不创建新的 table 并以编程方式用每天条目的发票余额填充它的情况下完成此操作?

您可能想在 table 日期创建一个度量,它使用 CALCULATETABLE 函数计算当天发票的余额。

https://technet.microsoft.com/en-us/library/ee634760(v=sql.105).aspx

给你:

InvoiceTotalAmount:=
CALCULATE(
    SUM(Invoice[Amount])
    ,ALL(DimDate) // The active relationship between Invoice[ExpiryDate]
                  // and DimDate[Date] would cause this to only be valid
                  // on the expiry date - we don't want that.
)

PaymentTotalToDate:=
CALCULATE(
    CALCULATE( // We'll manipulate the relationship in the inner
               // CALCULATE() before modifying context based on it
        SUM(Payment[Amount])
        ,USERELATIONSHIP(Payment[Date], DimDate[Date])
   )
    ,FILTER( // Now that that we're looking at the right relationship to
             // DimDate, we can alter the date range in context
        ALL(DimDate)
        ,DimDate[Date] <= MAX(DimDate[Date])
            // Here, we take all dates less than the latest date in
            // context in the pivot table - current date if 1 date in
            // context, else last of week, month, quarter, etc....
    )
)

InvoiceBalanceToDate:=[InvoiceTotalAmount] - [PaymentTotalToDate]

如果您没有利用 Invoice[ExpiryDate] 和 DimDate[Date] 之间的活动关系,我会将其标记为非活动关系,并将 Payment[Date] 和 DimDate[Date] 之间的关系标记为活动关系。然后,您可以省去 [InvoiceTotalAmount] 中的 CALCULATE() 和 ALL() 以及 [PaymentTotalToDate] 中的内部 CALCULATE()。

我的模型图: