我正在使用Power BI和DAX。
我想计算给定公司的最近发票日期,该日期早于当前发票日期。我的预期结果看起来像这样,虽然我目前有前三列,但第四列是我要计算的。
+-----------+-----------+------------------+-----------------------+
| invoiceId | CompanyId | InvoiceDate | Closest Earlier Date |
+-----------+-----------+------------------+-----------------------+
| 103111 | 219660 | 2018-04-30 00:00 | null |
| 555056 | 219662 | 2019-02-12 00:00 | null |
| 347454 | 219668 | 2018-09-28 00:00 | 2018-08-31 00:00 |
| 402587 | 219668 | 2018-10-31 00:00 | 2018-09-28 00:00 |
| 311889 | 219668 | 2018-08-31 00:00 | 2018-06-20 00:00 |
| 179054 | 219668 | 2018-06-20 00:00 | 2018-06-12 00:00 |
| 169563 | 219668 | 2018-06-12 00:00 | null |
| 167041 | 319670 | 2018-06-08 00:00 | 2018-06-01 00:00 |
| 572585 | 319670 | 2019-02-21 00:00 | 2018-06-01 00:00 |
| 144796 | 319670 | 2018-06-01 00:00 | null |
| 103274 | 319671 | 2018-04-30 00:00 | null |
| 210641 | 319671 | 2018-07-06 00:00 | 2018-04-30 00:00 |
+-----------+-----------+------------------+-----------------------+
我当前的公式如下:
ClosestEarlierInvoiceDate =
CALCULATE(
MIN('Invoices'[InvoiceDate]);
FILTER('Invoices';EARLIEST('Invoices'[InvoiceDate]))
)
但是我知道我没有过滤相同的companyId,但是当我尝试时,被告知我有一个循环引用,据我了解。但是我仍然不知道如何实现。
因此,上面的查询实际上返回了我整个表格的最早日期,并且每一行的值都相同。
感谢您的帮助,
答案 0 :(得分:0)
好的,所以我最终解决了我自己的问题。我已经尝试了大约一天半的时间,但是现在我在Stack上询问了它,并在45分钟后解决了该问题...
我创建了一个重复表,并在第一个表中创建了此计算列:
ClosestEarlierInvoiceDate =
CALCULATE(
MAX('Invoices-Dates'[date]);
FILTER('Invoices-Dates';'Invoices-Dates'[InvoiceDate] < 'Invoices'[InvoiceDate] &&
'Invoices-Dates'[CompanyId] = 'Invoices'[CompanyId])
)