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()。
我的模型图:
我有一个 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()。
我的模型图: