PowerBI DAX - 计算、CountRows、RelatedTable,获得 TOP 1
PowerBI DAX - Calculate, CountRows, RelatedTable, get TOP 1
我有以下 PowerBI DAX 度量。由于数据结构的原因,它必须如此复杂。该度量工作正常,它 returns 我计算了每个客户的有效合同数量。这很好地显示在可视化网格上,并提供了所有客户的所有有效合同的总数。
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,而我想要计算所有具有有效合同的客户?
我错过了什么?
由 Tom Martens 在 PowerBI 论坛 (link) 上使用以下方法解决:
ContractPerCustomer = SUMX(Customer, IF([ActiveContracts] > 0, 1, 0))
我有以下 PowerBI DAX 度量。由于数据结构的原因,它必须如此复杂。该度量工作正常,它 returns 我计算了每个客户的有效合同数量。这很好地显示在可视化网格上,并提供了所有客户的所有有效合同的总数。
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,而我想要计算所有具有有效合同的客户?
我错过了什么?
由 Tom Martens 在 PowerBI 论坛 (link) 上使用以下方法解决:
ContractPerCustomer = SUMX(Customer, IF([ActiveContracts] > 0, 1, 0))