Business Intelligence Controlling

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

Etiqueta: M Página 1 de 2

Integridad referencial y miembros desconocidos en Power BI

Introducción

En este artículo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dotándolos de significado y garantizando la integridad de nuestro modelo.

La integridad referencial es un conjunto de reglas que utilizan las bases de datos relacionales para asegurarse de que no existen valores en una clave foránea que no estén en la clave primaria de la tabla relacionada. Veámoslo con una imagen:

Leer más

Hasta el último segundo en Power BI

Video de mi participación en Power Platform Madrid, con una sesión sobre la creación y el uso de una dimensión horaria que nos permita analizar nuestros hechos a granularidades inferiores al día.

GPPB2021 Madrid – Integración de previsiones y presupuestos en el modelo tabular (video)

Ya están disponibles las grabaciones del Global Power Platform Bootcamp de Madrid. Os comparto el video de mi sesión donde estuvimos analizando las diferentes opciones que tenemos para integrar previsiones y presupuestos en un modelo de datos de Power BI.

Vimos cómo crear relaciones virtuales con DAX, cómo inspeccionar el contexto de filtro para mostrar u ocultar medidas según el nivel de granularidad de los datos subyacentes con el objetivo de evitar mostrar el presupuesto en contextos de filtro para los que no se encuentra disponible, así como las distintas opciones de las que disponemos para implementar algoritmos que nos permitan asignar o distribuir nuestras previsiones a granularidades mayores a las detalladas en el presupuesto.

Funciones de comparador en Power Query

Una de las características clave del lenguaje M es su cualidad de ser case sensitive, o sensible a mayúsculas y minúsculas. Esto significa que las palabras clave del lenguaje, las variables, los nombres de las funciones y cualquier otro identificador deben escribirse siempre teniendo en cuenta esta peculiaridad.

Power Query incluye una serie de comparadores integrados en el lenguaje que pueden usarse para determinar la forma en la que realizamos una comparación. Estos son los siguientes:

  • Comparer.Ordinal: se usa para realizar una comparación ordinal exacta.
  • Comparer.OrdinalIgnoreCase: se usa para realizar una comparación ordinal exacta que no distingue mayúsculas de minúsculas.
  • Comparer.FromCulture: se usa para realizar una comparación compatible con referencias culturales.

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

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

Scripts de Python en Power BI

La integración de Python en Power BI es, sin duda, una de las funcionalidades introducidas por el equipo más importantes hasta la fecha. Al igual que R, Python nos ofrece numerosas posibilidades para realizar tareas durante el proceso de ETL en nuestras propias consultas, y crear visualizaciones atractivas y útiles mediante el uso de sus librerías orientadas a la representación gráfica de información estadística. Además, nos proporciona la capacidad de incrementar de forma exponencial la competencia analítica de nuestros informes y cuadros de mando, mediante el uso de módulos de Machine Learning capaces de identificar patrones complejos en los datos con el objetivo de predecir comportamientos futuros, proporcionándonos información de alto valor para la toma de decisiones de negocio.

Ejecutar scripts de Python en el editor de consultas

El lenguaje de programación Phyton cuenta con librerías orientadas al análisis de datos con multitud de funciones y métodos que podemos usar durante las etapas de transformación y limpieza, antes de cargar las consultas al modelo. La librería pandas nos permite manipular Data Frames con un gran número de funciones diseñadas específicamente para los procesos de preparación de datos. Vamos a ver un ejemplo donde tenemos una tabla con datos de clientes que contiene valores null en las columnas que especifican el peso y la altura de cada uno de ellos:

Leer más

Dimensión horaria en M

En casi cualquier modelo de datos que diseñemos será imprescindible disponer de una dimensión temporal que nos permita filtrar y segmentar los valores numéricos de las tablas de hechos en función de los atributos temporales que nos interesen en cada momento. La dimensión temporal más común y útil corresponde a aquella de nivel de granularidad diario, donde tendremos un registro por cada día del periodo abarcado por dicha dimensión.

Por otra parte, atributos relacionados con la dimensión horaria utilizados para describir los eventos de las tablas de hechos aparecen con mucha menor frecuencia. No obstante, en algunas ocasiones en las que el tiempo queda registrado con un nivel de detalle inferior al día, la posibilidad de segmentar los datos por dichos atributos se convierte en uno de los temas principales a la hora de diseñar un almacén de datos analítico.

Este nivel de granularidad temporal, aunque más frecuente, no será exclusivo de modelos científicos que necesiten una especial precisión temporal en el registro de los eventos que pretenden analizar, sino que podemos encontrar fácilmente casos, dentro del mundo empresarial, en los que la capacidad de filtrar los datos por atributos temporales de detalle inferior a un día nos proporcionará un valor añadido importante. Un ejemplo sencillo puede ser un restaurante, donde conocer las horas de mayor y menor afluencia de clientes será clave en la toma de decisiones relacionadas con el manejo de los horarios del personal.

Leer más

Estructuras jerárquicas en tablas de hechos

Introducción

Un escenario muy frecuente cuando utilizamos bases de datos relacionales como origen principal de un modelo que reproduce un proceso de negocio, como pueden ser las ventas de una empresa, es encontrarnos con dos tablas de hechos con distinta granularidad para describir el mismo proceso. Una de ellas contendrá un registro por cada ticket, albarán o factura emitida con los atributos generales de fecha, cliente, base imponible, impuesto etc., y la otra irá un poco más allá y registrará las ventas a nivel de cada producto vendido, es decir, existirá un registro por cada línea de detalle dentro de cada documento.

En la siguiente imagen podemos ver un ejemplo de esta situación, donde tanto los albaranes como las facturas presentan una estructura de datos del tipo descrito:

Leer más

Página 1 de 2

BI CONTROLLING 2023 © TODOS LOS DERECHOS RESERVADOS