如何在DAX中与比较日期相同的列上计算最接近的较早日期

时间:2019-03-18 14:19:42

标签: powerbi dax

我正在使用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,但是当我尝试时,被告知我有一个循环引用,据我了解。但是我仍然不知道如何实现。
因此,上面的查询实际上返回了我整个表格的最早日期,并且每一行的值都相同。

感谢您的帮助,

1 个答案:

答案 0 :(得分:0)

好的,所以我最终解决了我自己的问题。我已经尝试了大约一天半的时间,但是现在我在Stack上询问了它,并在45分钟后解决了该问题...

我创建了一个重复表,并在第一个表中创建了此计算列:

ClosestEarlierInvoiceDate = 
CALCULATE(
    MAX('Invoices-Dates'[date]);

    FILTER('Invoices-Dates';'Invoices-Dates'[InvoiceDate] < 'Invoices'[InvoiceDate] &&
    'Invoices-Dates'[CompanyId] = 'Invoices'[CompanyId])
)