Acción de código DI008 (Mejora) Eliminar usos superfluos de CALCULATE
Descripción
No llame explícitamente a CALCULATE ni a CALCULATETABLE cuando no sea necesario.
Ejemplo 1: referencia a una medida sin modificadores del contexto de filtro
En los ejemplos siguientes, [Total Sales] es una referencia a una medida.
Cambiar:
CALCULATE([Total Sales])
Por:
[Total Sales]
Ejemplo 2: referencia a una medida en un contexto de fila
Cambiar:
AVERAGEX(Product, CALCULATE([Total Sales]))
Por:
AVERAGEX(Product, [Total Sales])
Ejemplo 3: los valores constantes no se ven afectados por las modificaciones del contexto de filtro
Cambiar:
VAR _salesWithTax = [Total Sales] * 1.25
RETURN
CALCULATE(_salesWithTax, Product[Color] = "Red")
Por:
VAR _salesWithTax = [Total Sales] * 1.25
RETURN
_salesWithTax
¿Por qué Tabular Editor hace esta sugerencia?
La función CALCULATE se usa para modificar el contexto de filtro de un cálculo y forzar una transición de contexto cuando es necesario. Sin embargo, cuando la expresión no se ve afectada por una transición de contexto y no se modifica el contexto de filtro, la función CALCULATE es innecesaria y puede eliminarse (Ejemplo 1). Esto puede hacer que el código sea más fácil de leer y entender.
Además, si la función CALCULATE se usa solo para forzar una transición de contexto y no para modificar el contexto de filtro (es decir, sin argumentos de filtro), pero la expresión es una simple referencia a una medida, entonces CALCULATE puede eliminarse (Ejemplo 2), ya que las referencias a medidas realizan transiciones de contexto implícitas cuando se evalúan en un contexto de fila.
Por último, si la expresión es constante (por ejemplo, cuando hace referencia a una variable VAR definida fuera de la función CALCULATE, como en el Ejemplo 3 anterior), el contexto de filtro modificado no afectará al resultado de la expresión, y la función CALCULATE, junto con todos los argumentos de filtro, puede eliminarse.