PowerBI DAX - 计算,CountRows,RelatedTable,获得TOP 1

时间:2017-10-10 15:42:27

标签: powerbi dax countrows

我有以下PowerBI DAX测量。由于数据的结构,出于多种原因,它必须是这种复杂的。该措施运作良好,它返回每个客户的有效合同数量。这在视觉网格上很好地显示,并为所有客户提供了所有有效合同。

ActiveContracts = CALCULATE(COUNTROWS(RELATEDTABLE(Contracts)), 
FILTER(Contracts,
        (
        Contracts[StartDate] >= CALCULATE(MIN(DateRange[Date]), ALLEXCEPT(DateRange, DateRange[Date])) && 
        Contracts[StartDate] <= CALCULATE(MAX(DateRange[Date]), ALLEXCEPT(DateRange, DateRange[Date]))
        )       
        ||
        (
        Contracts[End Date] >= CALCULATE(MIN(DateRange[Date]), ALLEXCEPT(DateRange, DateRange[Date])) && 
        Contracts[End Date] <= CALCULATE(MAX(DateRange[Date]), ALLEXCEPT(DateRange, DateRange[Date]))
       )
       ||
       (
       Contracts[StartDate] <= CALCULATE(MIN(DateRange[Date]), ALLEXCEPT(DateRange, DateRange[Date])) && 
       Contracts[End Date] >= CALCULATE(MAX(DateRange[Date]), ALLEXCEPT(DateRange, DateRange[Date]))
       )
   )     
)

但是,我只需要第一个结果,或者更简单地说,只需要有结果(即客户的有效合同)这一事实。

我尝试了很多东西,而我能得到的最接近的是另一个上面的措施:

HasContract = CALCULATE(IF(ISBLANK([CCActiveContract]), 0, 1))

这适用于行级别,但是当我使用这个新度量对列进行总计时,它总计为1,而我想要计算所有具有有效合同的客户?

我错过了什么?

谢谢

1 个答案:

答案 0 :(得分:1)

Tom Martens在PowerBI论坛(link)上解决了以下问题:

ContractPerCustomer = SUMX(Customer, IF([ActiveContracts] > 0, 1, 0))