A la hora de elaborar un reporte con Microsoft Power BI, prácticamente todos nos hemos encontrado con la situación de tener que crear infinidad de medidas sobre las cuales tenemos que realizar cálculos de inteligencia temporal, lo que nos puede llevar a perder una gran cantidad de tiempo en nuestro día a día y es un proceso tedioso, aburrido y poco efectivo.
Pero gracias a tabular editor y al ‘Advance Scripting’ podemos simplificar estos procesos hasta tal punto de realizar los cálculos sobre la columna o medida con tan solo pulsar un botón las medidas serán generadas automáticamente y listas para ser usadas en nuestro reporte.
Una vez lo tenemos descargado, abrimos nuestro modelo en Power BI y nos vamos en el ribbon a ‘External Tools’ y una vez aquí seleccionamos Tabular Editor, para conectarnos directamente a los datos de nuestro modelo.
Una vez abierto con nuestro modelo cargado, tenemos una vista de las relaciones, de las tablas, de los roles etc. Y a la derecha, tenemos dos opciones, el ‘Expression Editor’ o el ‘Advance Scripting’ siendo este último el que usaremos para automatizar la creación de medidas.
En el “Advanced Scripting” podemos o bien generar medidas a partir de columnas o crear medidas sobre otras recientemente creadas (como, por ejemplo, la inteligencia temporal):
Es el momento de ser un experto de Power BI y Microsoft Power Platform!
Creación de medidas a partir de una columna
En el editor de texto introduciremos el siguiente Código y lo modificaremos en función de la medida que queramos crear. En el caso puesto como ejemplo queremos contar los diferentes clientes de nuestro modelo.
// Crea una medida a partir de una columna y oculta esa columna
foreach(var c in Selected.Columns)
{
var newMeasure = c.Table.AddMeasure(
"Total" + c.Name, // Nombre de la medida
"distinctCount(" + c.DaxObjectFullName + ")", // Expresión en DAX
c.DisplayFolder // Dónde se guardará la medida
);
//Seleccionamos el formato de la medida:
newMeasure.FormatString = "0.00";
// Documentamos la medida:
newMeasure.Description = "This measure is the sum of column " + c.DaxObjectFullName;
// Escondemos la columna:
c.IsHidden = true;
}
Una vez tenemos nuestro Código editado en el editor Avanzado, clicamos en el icono más, escribimos el nombre de nuestra función creada y le decimos sobre qué tipo de contexto se va a aplicar, en este caso sería una columna, le damos a ok y la guardamos:
Para crear la medida, pinchamos la columna y le damos al botón play y se nos creará la medida automáticamente. De modo que con solo clicar en la columna que queramos contar y pulsar el botón ejecutar se nos creará la medida. Como podemos ver en la siguiente captura de pantalla, se nos ha ocultado la columna “Cliente” y se nos ha creado la medida “TotalCliente”.
Creación de medidas a partir de una columna
Con el Código siguiente tenemos la posibilidad de crear cuatro medidas a partir de una previamente creada (al ser inteligencia temporal lo que queremos calcular es muy importante tener definida la dimensión fecha y sustituir el 'dDate'[Date]" por nuestra columna de dimensión fecha, si la tienes en Español podría ser: 'dFecha'[Fecha]";).
Al guardar este proceso podemos invocar la función en cualquier momento que queramos pudiendo ser cualquier otro reporte con otro modelo de datos, simplemente seleccionamos que su contexto es sobre una medida y guardamos.
Para ejecutarlo, seleccionamos la medida dentro de la table en la que se encuentre y clicamos ejecutar y automáticamente se nos crearán las medidas que hemos definido en el Código en relación a las Ventas Importe en nuestro caso:
Este proceso se puede realizar tantas veces como queramos sobre las diferentes medidas que tengamos en el modelo.
También se pueden ejecutar con el segundo botón, haciendo clic en la medida y en “Custom actions” tendremos los Script que habremos guardado anteriormente.
Una vez lo tengamos todo listo pulsamos el botón de guardar y aplicar y nos aparecerán directamente en nuestro PBIX listas para ser usadas.
Este es solo un ejemplo de las muchas utilidades que tiene Tabular Editor y como su uso nos puede ayudar a ahorrar mucho tiempo y ser más eficientes y eficaces a la hora de crear nuestros reportes. Si todavía no conoces qué es DAX consulta nuestro post sobre el Lenguaje DAX.