Business Intelligence Controlling

La nueva generación del reporting económico-financiero y el control de gestión empresarial

Página 2 de 4

Crear dimensión horaria en DAX

Introducción

En una entrada anterior vimos cómo, en escenarios donde tanto los atributos relacionados con la fecha como los relacionados con la hora son relevantes para el análisis que queremos realizar, podíamos crear una dimensión horaria en M que nos sirviera para filtrar y segmentar nuestras medidas en función de atributos temporales menores al día.

La idea principal consiste en crear una lista con todas las horas que va a incluir nuestra consulta, que en función de la granularidad temporal que deseemos, tendrá un número de elementos distinto. Por ejemplo, si queremos que la consulta tenga un nivel de detalle de segundos, utilizaríamos la función List.Times de la siguiente forma:

let
     Origen = List.Times(
         #time(0,0,0),
         24*60*60,
         #duration(0,0,0,1)
     )
 in
     Origen

Leer más

Clasificar valores numéricos mediante una función personalizada en Power Query

Introducción

Cuando se construye un modelo de datos en Power BI, suele ser común la necesidad de ampliar una tabla procedente de un origen de datos con columnas adicionales, cuyo contenido se derive de los datos existentes en dicha tabla. En estos casos en los que los valores de las nuevas columnas van a ser pre-calculados y materializados de forma estática en el modelo y la lógica de negocio a implementar deriva del resto de columnas, es casi siempre preferible utilizar Power Query para definirlas, principalmente porque obtendremos un mayor nivel de compresión que usando columnas calculadas en DAX, y una columna con mejor compresión ocupará menos en memoria y normalmente nos proporcionará mejores niveles de rendimiento.

Un caso común, corresponde a la creación de columnas que nos ayuden a clasificar valores numéricos de manera que podamos discretizar esa variable y entender de forma clara la distribución de estos valores en nuestro modelo. Esta situación surge en multitud de escenarios, por ejemplo, cuando necesitamos clasificar facturas en función de la fecha de vencimiento, productos por precio de venta, empresas por cifra de negocios o empleados por grupos de edad. En este artículo vamos a ver distintas opciones para crear estas columnas con Power Query.

Leer más

Diagramas de Pareto dinámicos en Power BI

Introducción

El diagrama de Pareto, también conocido como curva cerrada o distribución A-B-C, es un gráfico combinado de columnas y líneas en el que los valores individuales se representan en orden descendente por columnas, y el total acumulado se representa a través de la línea. El nombre del gráfico proviene del principio de Pareto, llamado así en honor a Vilfredo Pareto, un destacado economista italiano. Dicho principio describe el fenómeno estadístico por el cual en cualquier población que contribuye a un efecto común, es una proporción pequeña la que contribuye a la mayor parte del efecto.

Este gráfico permite asignar un orden de prioridades, al mostrar gráficamente el principio de Pareto y posibilitar distinguir los factores más importantes entre un conjunto, generalmente amplio, de ellos. Es una de las herramientas más utilizadas en el control de calidad, donde a menudo se utiliza para identificar las fuentes más comunes de defectos, la tipología de defecto que más se produce o los motivos más frecuentes de las quejas de los clientes.

Leer más

Mostrar la última fecha de actualización en Power BI

Introducción

En numerosas ocasiones, la primera pregunta que nos hace un usuario de un informe en Power BI es ¿están los datos actualizados? En un Panel del Servicio podemos configurar en cualquiera de las visualizaciones ancladas en el mismo, la capacidad de mostrar la hora de última actualización de los datos subyacentes. Pero, ¿qué opciones tenemos si queremos que el usuario tenga disponible directamente en el informe dicha hora de última actualización como una visualización más?

Fecha de modificación del origen de datos

En primer lugar, es importante distinguir entre la fecha de actualización del informe de Power BI y la fecha de actualización de los orígenes de datos utilizados en dicho informe.

Leer más

Desnormalizando dimensiones de forma eficiente

Como vimos en una entrada anterior, cuando diseñamos un modelo de datos analítico, el enfoque principal debe situarse en lograr un diseño que favorezca la simplicidad en la exploración y agregación de los datos, a la vez que en obtener un rendimiento óptimo en la realización de consultas.

Las estructuras altamente normalizadas, con dimensiones organizadas en esquemas de copo de nieve que principalmente nos encontraremos en los sistemas de procesamiento de transacciones, no serán adecuadas para satisfacer las necesidades analíticas de la empresa teniendo la comprensibilidad del modelo por parte de los usuarios y la velocidad de consulta como objetivos principales. El hecho de disponer de más de una tabla por cada dimensión de la tabla de hechos de un proceso de negocio implica tener que realizar código más complejo para realizar una consulta que a su vez se ejecutará en un tiempo mayor, debido en parte al mayor número de relaciones.

Leer más

Dinamizar sobre más de un valor en Power Query

La función Table.Pivot() del lenguaje M nos ofrece la capacidad de obtener como resultado una tabla que contiene un valor agregado para cada valor único de una columna. Cuando usamos esta función, Power Query agrupa cada valor mediante la agregación que seleccionemos y rota (pivota) los datos de la columna de atributo para convertirlos en encabezados de columna.

Desafortunadamente, Table.Pivot() sólo puede pivotar sobre una columna a la vez, por lo que si necesitamos realizar esta operación sobre más de una columna tenemos que llevar a cabo un sencillo proceso. Imaginemos que disponemos de la siguiente tabla:

Leer más

Medias móviles en Power BI

En estadística, una media móvil se refiere al cálculo de puntos de datos mediante la creación de una serie de promedios de diferentes subconjuntos del total de los datos originales con el objetivo de suavizar las fluctuaciones del corto plazo, resaltando así las tendencias o ciclos de largo plazo.

En este artículo vamos a ver diferentes formas de implementar una media móvil en Power BI, no con el objetivo de crear patrones predefinidos que podamos usar directamente en nuestros modelos, sino con el propósito de entender distintas formas de manipular el contexto de filtro y practicar nuestras habilidades para «pensar en DAX».

Leer más

Imitar el comportamiento del argumento MissingField.Ignore en Table.TransformColumnTypes

Introducción

En el anterior artículo estuvimos hablando del reto de crear consultas robustas que sean resistentes a los cambios en la estructura de los datos en el origen, y que no fallen en la actualización por culpa de estas modificaciones. Vimos cómo, probablemente, el catalizador más común de este tipo de errores corresponde al uso de la función Table.TransformColumnTypes, y como se considera buena práctica el definir el tipo de solamente aquellas columnas que lo necesiten, con la finalidad de referenciar el menor número posible de ellas en nuestro código, y así evitar posibles fallos a la hora de actualizar nuestro modelo.

Cuando tratamos el tema de como eliminar de forma segura columnas en Power Query vimos el funcionamiento del argumento MissingField.Ignore, un parámetro opcional en muchas de las funciones de registro y de tabla, que indica que los campos referenciados dentro de la función que no se detecten deben ser ignorados.

Desafortunadamente, al contrario de lo que ocurre con las funciones Table.RemoveColumns o Table.RenameColumns, este tercer parámetro opcional no puede ser usado dentro de la función Table.TransformColumnTypes, lo que hace que cuando trabajamos con orígenes de datos dinámicos donde los campos pueden sufrir modificaciones, tengamos un poco más difícil el hecho de proteger nuestras consultas de este tipo de errores. Por ello, en este artículo vamos a ver cómo podemos imitar el comportamiento de MissingField.Ignore dentro de la función Table.TransformColumnTypes, con el objetivo de dotar de mayor robustez a nuestras consultas.

Leer más

Eliminar y transformar columnas de forma segura en Power Query

Introducción

El editor de consultas de Power Query nos proporciona un interfaz gráfico de usuario que facilita enormemente una gran parte de nuestras tareas de limpieza y optimización estructural de los datos, traduciendo los pasos que vamos realizando sobre una vista previa, a un flujo de instrucciones programáticas en lenguaje M que podemos ejecutar con el objetivo de automatizar dichas tareas.

Desafortunadamente, esta facilidad a la hora de realizar las tareas de ETL trae consigo la capacidad de cometer, sin que nos demos cuenta, algunos errores que pueden llevarnos a la creación de consultas vulnerables que no serán capaces de soportar los cambios en orígenes de datos dinámicos, y por lo tanto no se actualizarán.

Leer más

Integración de previsiones presupuestarias y otros datos a diferente granularidad en Power BI

Introducción

El modelado de previsiones presupuestarias constituye uno de los escenarios más desafiantes en el campo del diseño y explotación de modelos de datos en Power BI. Las estructuras de datos en dicha herramienta se basan en el motor de Analysis Services y en la tecnología xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un archivo .pbix se inicia a su vez una instancia tabular de SSAS (SQL Server Analysis Services) en un puerto aleatorio.

En el modelo tabular, a diferencia de lo que ocurre en el multidimensional, las relaciones entre tablas se establecen utilizando una sola columna, que requiere que sus valores sean únicos en la tabla de búsqueda, por lo que no podemos definir relaciones entre hechos y dimensiones a diferentes granularidades directamente.

En este artículo veremos cómo manejar las relaciones entre tablas con distinta granularidad, escenario típico cuando tratamos de incluir previsiones presupuestarias en nuestro modelo. En este tema cada empresa es un mundo y todo depende del nivel de detalle al que se hayan definido dichas previsiones, pero el problema consiste a menudo en que la granularidad del presupuesto es completamente distinta a la del resto del modelo de datos.

Leer más

Página 2 de 4

BI CONTROLLING 2023 © TODOS LOS DERECHOS RESERVADOS