Business Intelligence Controlling

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

Etiqueta: Modelado de datos Página 1 de 2

Calculando clientes nuevos, perdidos y recuperados con funciones WINDOW

Introducción

Hace ya unos años que Microsoft incorporó a DAX una nueva familia de funciones tabulares muy especiales: las funciones WINDOW. Se trata de funciones conceptualmente muy similares a las funciones homónimas de SQL, diseñadas para operar sobre conjuntos de datos previamente ordenados y, si es necesario, particionados.

Hasta ese momento, resolver cálculos dependientes de posiciones relativas; el primer cliente, el anterior pedido, el siguiente valor en un ranking, implicaba recurrir a funciones como TOPN o RANKX, y a iteraciones anidadas.

Estas funciones no amplían realmente la capacidad expresiva de DAX, todo lo que hoy hacemos con estas funciones ya podía hacerse antes, pero sí transforman la forma en que lo escribimos. Simplifican el código, lo hacen más mantenible y, en muchos casos, más eficiente. Además, introducen un concepto nuevo y fundamental en el lenguaje: apply semantics, al que seguramente dedicaremos otro artículo más adelante, que permite que dichas funciones interactúen simultáneamente con el contexto de fila y el contexto de filtro.

En este artículo vamos a aplicar estas funciones a un caso de negocio muy habitual: la identificación de clientes nuevos, perdidos y recuperados. Un problema clásico en análisis comercial que, gracias a estas funciones puede resolverse hoy con un rendimiento, claridad y precisión muy superiores a los patrones tradicionales.

Aunque el foco estará en clientes, el patrón que construiremos es completamente generalizable. La misma lógica puede aplicarse para detectar productos que dejan de venderse, productos reactivados, tiendas que inician o cesan actividad, comerciales que recuperan cartera…

En los siguientes apartados veremos cómo funcionan estas funciones y cómo utilizarlas correctamente para construir un patrón sólido, reutilizable y eficiente.

Leer más

Las tablas padre-hijo y el reporting económico-financiero en Power BI

Introducción

En el ámbito del reporting económico-financiero hay algo incuestionable: las estructuras nunca son definitivas. Las organizaciones evolucionan, cambian los criterios de análisis y aparecen nuevas necesidades de información que obligan a revisar continuamente la forma en que se presentan los estados financieros.

Esta situación se hace especialmente evidente en la gestión de las estructuras jerárquicas que soportan estados financieros analíticos, como la Cuenta de Resultados Analítica. Epígrafes, subepígrafes y centros de responsabilidad forman jerarquías complejas que deben ser coherentes y fáciles de mantener y evolucionar. Cuando estos cambios requieren intervención técnica o ajustes costosos (en tiempo y dinero), el reporting deja de acompañar al negocio y se convierte en una limitación.

Antes de continuar, cuando en este artículo hablemos de centros de responsabilidad (coste o beneficio), a lo que me refiero es a centros de responsabilidad contables, es decir, centros virtuales que agrupan ingresos/costes relacionados con una actividad que no tiene por qué estar definida formalmente y que en la práctica corresponden a las combinaciones que existen entre las cuentas contables y las dimensiones analíticas definidas en una organización, como pueden ser el departamento, el área, el equipo etc…

En este contexto de las estructuras de los estados financieros, las tablas padre-hijo ofrecen un enfoque especialmente adecuado. Permiten almacenar y gestionar jerarquías de profundidad variable sin alterar la estructura física de los datos, facilitando una gestión flexible y escalable de las estructuras de reporting financiero.

A lo largo de este artículo veremos qué son las tablas padre-hijo, por qué encajan de forma natural con el reporting económico-financiero y cómo, combinadas con Dataverse y una model-driven Power App (o cualquier otro sistema en el que podamos crear la aplicación), permiten trasladar al usuario de negocio la responsabilidad y la autonomía para mantener y adaptar estas estructuras. Porque en los departamentos de finanzas y controlling, el cambio no es la excepción, sino la norma.

Leer más

Tablas de intervalos de fechas y relaciones virtuales

En el último artículo utilizamos DAX para analizar las ventas de una empresa a partir de una tabla en la que disponíamos de los precios para un determinado cliente, artículo y rango de fechas.

En este artículo vamos a complicar un poco más el requisito de negocio y veremos cómo podemos utilizar la función TREATAS para establecer relaciones virtuales en el caso de que existan registros de precios que no dependan de las columnas de relación, en el ejemplo del artículo anterior, el IdCliente y el IdArticulo, sino que utilicen otros atributos dimensionales para la asignación del importe.

En este ejemplo vamos a trabajar con precios de coste en lugar de con precios de venta. Supongamos que la tabla con la que tenemos que operar ahora es la siguiente:

Leer más

La rentabilidad en un modelo de datos financiero

Introducción

En este artículo vamos a tratar una de las cuestiones clave para diagnosticar la salud de una empresa: la rentabilidad. Este indicador, que como veremos más adelante puede hacer referencia a métricas totalmente distintas entre si, depende de forma considerable de las decisiones tomadas por los directivos de la organización.

Podríamos pensar que nos acercamos a la rentabilidad mediante la comparación interanual de los beneficios empresariales. Sin embargo, dicha comparación puede albergar actuaciones empresariales que distorsionen la calidad del resultado. Por ejemplo, si el incremento de las ventas proviene de una pobre negociación con los clientes, que ha dado como resultado una ampliación del periodo medio de cobro; o si está acompañado de una estrategia de enfoque conservador en las operaciones, con grandes incrementos en los saldos de existencias para evitar roturas de stock, ese aumento de ventas y de beneficios conllevará también un incremento indeseado de los activos en el balance (en este caso, de las necesidades operativas de fondos) y, por lo tanto, exigirá igualmente un aumento de los recursos para financiarlos. Del mismo modo, un incremento en la cifra de ventas conseguido mediante un aumento desproporcionado en los costes incurridos para obtener aquellas tampoco mejorará la rentabilidad.

Leer más

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

Video Power BI Quizz Pensando en DAX

Os dejo el video de mi participación en el Power BI Quizz de los grandes Ricardo Rincón y Raquel Alvear. Un autentico placer haber podido aportar mi granito de arena a esta iniciativa.

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

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

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

Página 1 de 2

BI CONTROLLING 2026 © TODOS LOS DERECHOS RESERVADOS