DAX tiene dos funciones además de ALL (véase este artículo) para retornar los valores únicos de una columna, VALUES y DISTINCT. Ambas son muy similares salvo en como tratan la fila en blanco si existiera en la tabla que estamos analizando.

ALL siempre retorna todos los valores distintos de una columna, mientras que VALUES retorna sólo los valores visibles distintos. Lo vemos con un ejemplo:

TodoslosColores := COUNTROWS ( ALL    ( 'Product'[Color] ) )
NumeroColores   := COUNTROWS ( VALUES ( 'Product'[Color] ) )

La medida TodosLosColores, cuenta todos los colores de la tabla Product, mientras que la medida NumeroColores, cuenta sólo aquellos que están visibles dentro del contexto del filtro del report. Aquí podemos ver el resultado de ambas medidas:

La tabla está filtrada por categoría con lo cual la medida NumeroColores realiza el cálculo para cada categoría teniendo en cuenta el contexto. Sin embargo, TodosLoscolores, no tiene en cuenta el contexto y realiza el mismo cálculo para todas las categorías siendo este cálculo el mismo para todas las filas de la tabla. Resumiendo tanto VALUES como DISTINCT realizan el cálculo considerando el filtro existente en el report, mientras que ALL ignora el filtro.

Entonces, porque existen dos funciones que retornan los mismos valores o parece que hacen los mismo, VALUES y DISTINCT. Para entender la diferencia entre amabas funciones tenemos que explicar el comportamiento del motor (engine DAX) en el caso de los valores blank.