Business Intelligence Controlling

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

Etiqueta: BI Página 1 de 3

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

Las funciones ALL* como modificadores de CALCULATE

INTRODUCCIÓN

La función ALL (y sus compañeras de familia: ALLEXCEPT, ALLNOBLANKROW, ALLCROSSFILTERED y ALLSELECTED) son unas de las funciones tabulares de DAX más utilizadas, principalmente con el propósito de expandir el número de registros a considerar en la realización de un determinado cálculo, eliminando filtros que se encuentran activos en el contexto actual.

Como función tabular, ALL devuelve todas las filas de una tabla o todos los valores únicos de una o más columnas dependiendo del parámetro utilizado.

Cuando usamos una de estas funciones como la función de primer nivel en un argumento de filtro de CALCULATE, su comportamiento cambia y en lugar de funcionar como una función de tabla actúa como un modificador de CALCULATE, eliminando un filtro existente en el contexto en lugar de crear uno nuevo.

Leer más

Workshop sobre DAX en Power BI Days Madrid

El viernes 25 de noviembre estaré impartiendo un workshop sobre el lenguaje DAX en el evento Power BI Days de Madrid. ¡Allí os espero!

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.

https://www.youtube.com/watch?v=evi9GYXtyyg

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.

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

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

Página 1 de 3

BI CONTROLLING 2023 © TODOS LOS DERECHOS RESERVADOS