Citando a la página de soporte de Microsoft:
«Una columna calculada usa una única fórmula que se ajusta a cada fila y se expande automáticamente para incluir filas adicionales en esa columna para que la fórmula se extienda inmediatamente a esas filas.»
un wey de Microsoft
En esta entrada vamos a explicar cómo usar columnas calculadas en el modelo de datos de Power Pivot. Tomaremos como ejemplo un conjunto de datos de «Ordenes», en donde tenemos nivel de producto, «Unidad vendida» y tendremos que añadirlo a la columna calculada para «Ingresos». Para calcular los ingresos, vamos a necesitar el «Precio por unidad» en el nivel de producto, el cual tendremos en la tabla de «Producto Maestro».
Para empezar, tenemos que obtener el «Precio por Unidad» en la tabla de «Ordenes», pero tenemos dos métodos diferentes para obtener el precio por unidad en la tabla de ordenes de la tabla de «Producto Maestro».
FUNCIÓN LOOKUPVALUE
La función LOOKUPVALUE nos regresa el valor en result_columnName para la fila que cumpla todos los criterios especificados por search_columnName y search_value.
La síntaxis que vamos a usar es la siguiente:
LOOKUPVALUE(result_columnName ,search_columnName ,search_value [,search_columnName ,search_value ]…[,alternateResult ])
Ahora vamos a revisar por partes los valores para entender mejor el cómo es que funciona esta función.
- result_columnName: es el nombre de una columna existente que contenga el valor que queramos que nos arroje. La columna deberá estar nombrada usando síntaxis DAX estándar, o sea que no puede ser una expresión.
- search_columnName: es el nombre de una columna existente en la misma tabla que result_columnName o en una tabla relacionada, sobre la cual se hará la búsqueda. La columna igualmente deberá estar nombrada usando síntaxis DAX estándar y, nuevamente, no puede ser una expresión.
- search_value: es una expresión escalar que no refiera a alguna columna en la misma tabla en donde se está haciendo la búsqueda.
- alternateResult (opcional): el valor regresado cuando el contexto para result_columnName haya sido filtrado hasta cero o más que un valor distinto. Cuando no sea proveído, la función nos regresará BLANK() cuando result_columnName sea filtrado hasta el valor cero o bien a un error cuando haya más de un valor distinto.
Para este ejemplo, esta será la fórmula =LOOKUPVALUE que se usará, ya ajustada conforme a nuestros datos:
=LOOKUPVALUE(Producto_Maestro[Unit Price],[Tansaction ID],Ordenes[Tansaction ID])
Función =LOOKUPVALUE
Tabla de Producto Maestro
FUNCIÓN RELATED
En comparación, y como segundo método, hemos usado la función «RELATED» para obtener el «Precio por Unidad» del «Producto Maestro» a la tabla de «Ordenes». Esta función requiere que exista una relación entre la tabla actual y la tabla con la información relacionada. Tendremos que especificar la columna que contenga los datos que queramos y la función seguirá una relación existente muchas-a-una para buscar el valor de la columna específicada en la tabla relacionada. Si la relación no existe, entonces deberemos crearla primero.
Aquí hemos creado la relación entre la tabla de «Ordenes» y la tabla de «Producto Maestro»:
La síntaxis que usaremos en esta función será bastante simple:
RELATED(column)
- column: es la columna que contiene los valores que queremos que recupere.
En este ejemplo hemos usado la fórmula de la siguiente manera:
=RELATED('Product Master'[Price per unit])
Una vez que tengamos el «Precio por Unidad» en «Ordenes», entonces podremos calcular fácilmente los «Ingresos». Hemos usado la siguiente fórmula en el modelo de datos de Power Pivot para calcular los «Ingresos»:
=[Quantity]*[Price Per Unit]
Y ahora nuestra parte del modelo de datos está completa. Podemos dar click en el botón de tabla Pivot para crear una tabla Pivot. Aquí vamos a crear tanto una tabla Pivot como un gráfico Pivot:
Abajo tendremos la tabla Pivot y el gráfico Pivot que hemos creado:
Y así de fácil puedo crear columnas calculadas en Power Pivot según el tipo de relación que encuentre en mi tabla, esto te ahorrará mucho tiempo de procesamiento. Igual no siempre requerirás una columna calculada, puedes revisar cuando usarla y cuando no aquí.
Cualquier duda nos leemos abajo.