Это вызвано тем, что называется «контекст-переход» (см. sqlbi более подробное объяснение).
На практике ваша формула «RepSales» использует «Контекст строки» (создан по SUMX), который превращается в эквивалентный «Фильтр контекста» (по CALCULATE), но, поскольку у вас нет уникального ключа в таблице, он получает и использует несколько строк в каждой итерации, ниже объяснения.
Для первой строки контекст строки имеет ProdID = 1 И RepID = 1, что превращается в эквивалентный контекст фильтра (остается неизменным, в данном случае) равен ProdID = 1 AND RepID = 1 , но контекст фильтра является глобальным, и две строки (первые 2) соответствуют этому фильтру. Это повторяется для каждой строки.
этого не происходит с формулой "RepSales", потому что она не повторяется несколько раз (как вы уже заметили)
Это ваша текущая ситуация:
Чтобы доказать это, просто добавьте rowID в таблицу транзакций:
Это не это происходит потому, что эквивалентный контекст фильтра также включает столбец RowID, который соответствует только одной строке
Надеюсь, это поможет, используйте статью sqlbi в качестве справки, это будет исчерпывающее руководство, чтобы понять это