Это должно сработать:
FPY =
VAR FailedSerialNumbers =
CALCULATETABLE (
VALUES ( 'Table'[Serial Number] ),
FILTER ( ALL ( 'Table'), 'Table'[RESULT] = "FAIL" )
)
VAR SerialNumbers =
VALUES ( 'Table'[Serial Number] )
VAR FPYResult =
CALCULATE (
DISTINCTCOUNT ( 'Table'[Serial Number] ),
'Table'[Serial Number] IN EXCEPT ( SerialNumbers, FailedSerialNumbers )
)
VAR SerialNumberVolume =
CALCULATE ( DISTINCTCOUNT ( 'Table'[Serial Number] ) )
RETURN
DIVIDE ( FPYResult, SerialNumberVolume )
Что дает следующее:
В этом решении используются две табличные переменные: одна - с ошибочными серийными номерами, а другая - со всеми серийными номерами. Используя эти таблицы, я могу извлечь все серийные номера, которые никогда не выходили из строя, используя функцию EXCEPT
. Как только это значение было рассчитано, мы просто делим его на общий объем.
Надеюсь, это поможет!