Expresiones DAX de tabla

Completado

La mayoría de las veces en Power BI, las tablas se crean al importar datos en el modelo desde un origen de datos externo. En su lugar, con las funciones de tabla, puede agregar tablas en función de los datos que ya cargó en el modelo.

Información general

Las funciones de tabla permiten que los usuarios de Power BI creen una tabla intermedia, que se ve en el modelo de datos y se puede usar en otras expresiones DAX. Las funciones de tabla son tablas temporales que se pueden usar, pero no son visibles porque no se muestran.

FILTER, VALUES y ALL son algunas tablas intermedias comunes que a menudo se usan dentro de medidas de DAX.

Aplicación de la función FILTER

La función FILTER establece el filtro para una tabla específica y, a continuación, usa una versión condensada de una tabla en un cálculo. En otras palabras, devuelve una tabla que representa un subconjunto de otra tabla o expresión.

Por ejemplo, supongamos que tiene la tabla de datos siguiente:

Tabla de datos a la que se hará referencia en el ejemplo de la función FILTER.

En la tabla anterior, tiene algunas filas que resaltan las ventas de Seattle. Las ventas totales de Seattle en 2018 son 30,13 (20,46 + 9,67). Para obtener este resultado con la función FILTER:

2018 Sales = SUMX(
  FILTER(
    Sales,
    YEAR( Sales[SalesDate] ) = 2018
  ),
  [Price]*[Quantity]
)

Sugerencia

CORRELACIÓN CON TABLEAU: Para crear el mismo cálculo en Tableau, usaría la sintaxis IF/THEN: 2018 Sales = IF YEAR([SalesDate]) = 2018 THEN SUM([Price]*[Quantity]) END

En el fragmento de código anterior, primero recuperó los datos para el contexto de filtro, que es la tabla de hechos Sales (Ventas):

Vista previa de los datos de la tabla de hechos Sales (Ventas).

A continuación, filtró los datos de ventas para incluir solo las ventas de 2018.

Vista previa de los datos de la tabla de hechos Sales (Ventas) en la que se resaltan las ventas de 2018.

Por último, evaluó la expresión, pero solo para los registros de la tabla temporal.

Vista previa de los datos de la tabla de hechos Sales (Ventas) filtrada para mostrar las ventas de 2018.

Aplicación de la función VALUES

VALUES devuelve una tabla de una columna que contiene los valores distintos de la tabla o columna especificadas; se quitan los valores duplicados y solo se devuelven valores únicos.

Por ejemplo, acaba de recibir una tarea en la que debe mostrar qué jugador de un equipo deportivo tiene la última multa pendiente que debe pagar.

Esta es la tabla de datos, denominada Team Fine Details (Detalles de multas del equipo), que va a utilizar:

Tabla de datos a la que se hará referencia en el ejemplo de la función VALUES.

Lo que tendrá que hacer es probar si solo queda un jugador pendiente de pagar una multa. Si es así, muestre su nombre. De lo contrario, muestre el mensaje "more than one player" ("más de un jugador").

Para ello, utilice la función VALUES:

LastPlayer = IF(
  COUNTROWS( VALUES( 'Team Fine Details'[SportsTeam] ) ) = 1,
  VALUES( 'Team Fine Details'[PlayerName] ),
  "More than one player"
)

Sugerencia

CORRELACIÓN CON TABLEAU: Así es como realizaría el mismo cálculo en Tableau: LastPlayer = IF COUNTD([SportsTeam]) = 1 THEN [PlayerName] ELSE "More than one player" END

Esta medida tendría un aspecto similar al informe o visualización que aparece a continuación:

Informe de ejemplo con el cálculo LastPlayer incluido.

Aplicación de la función ALL

La función ALL indica a Power BI que examine una tabla específica, tome todos los valores de ella (sin filtrar la tabla) y use ese subconjunto de valores en una expresión.

Un uso común de la función ALL es cuando se quiere conocer el porcentaje del total de una medida agregada.

Por ejemplo, considere el escenario del importe de la multa del equipo deportivo. Su jefe está satisfecho con los resultados de la tarea anterior, pero quiere saber qué equipo tiene el mayor porcentaje de multas pendientes.

Informe más reciente con el cálculo LastPlayer incluido.

El primer paso consiste en crear una medida para el total general de las multas pendientes:

TotalAllFineAmount = CALCULATE( [TotalFineAmount], ALL( 'Team Fine Details'[SportsTeam] ) )

Sugerencia

CORRELACIÓN CON TABLEAU: Esta es la forma en que realizaría el mismo cálculo en Tableau con la expresión FIXED LOD. Agrega el valor TotalFineAmount total en el nivel de tabla: TotalAllFineAmount = { FIXED : SUM([TotalFineAmount]) }

El segundo y último paso consiste en crear el porcentaje de medida total a través de la función DIVIDE:

FineAmountPercentOfTotal = DIVIDE( [TotalFineAmount], [TotalAllFineAmount] )

Sugerencia

CORRELACIÓN CON TABLEAU: Así es como realizaría el mismo cálculo en Tableau: FineAmountPercentOfTotal = SUM([TotalFineAmount]) / SUM([TotalAllFineAmount])