Table of Contents

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.