{"id":1002,"date":"2019-07-04T11:50:03","date_gmt":"2019-07-04T11:50:03","guid":{"rendered":"https:\/\/trainingpowerbi.wordpress.com\/?p=1002"},"modified":"2020-10-26T11:18:20","modified_gmt":"2020-10-26T10:18:20","slug":"presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi","status":"publish","type":"post","link":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/","title":{"rendered":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI"},"content":{"rendered":"<h4>Introducci\u00f3n<\/h4>\n<p><span class=\"tlid-translation translation\" lang=\"es\"><span title=\"\">El modelado de <strong>previsiones presupuestarias<\/strong> constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n de modelos de datos en Power BI. <span lang=\"es\">Las estructuras de datos en dicha herramienta se basan en el <strong>motor de <em>Analysis Services<\/em><\/strong> y en la tecnolog\u00eda <em>xVelocity<\/em> (previamente denominada <em>VertiPaq<\/em>); de hecho, al ejecutar un archivo .pbix se inicia a su vez una instancia tabular de SSAS (<em>SQL Server Analysis Services<\/em>) en un puerto aleatorio.<\/span><\/span><\/span><\/p>\n<p>En el modelo tabular, a diferencia de lo que ocurre en el multidimensional,<span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\"> las relaciones entre tablas se establecen utilizando una sola columna, que <strong>requiere que sus valores sean \u00fanicos<\/strong> en la tabla de b\u00fasqueda, por lo que no podemos definir relaciones entre hechos y dimensiones a diferentes granularidades directamente.<\/span><\/span><\/p>\n<p><span lang=\"es\">En este art\u00edculo veremos c\u00f3mo manejar las relaciones entre tablas con distinta granularidad, escenario t\u00edpico c<\/span>uando 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 <strong>la granularidad del presupuesto es completamente distinta<\/strong> a la del resto del modelo de datos.<\/p>\n<p><!--more--><\/p>\n<p><span lang=\"es\">Para ser capaces de integrar los datos presupuestarios en nuestro modelo correctamente podemos recurrir a distintas t\u00e9cnicas. Probablemente l<\/span><span lang=\"es\">a primera que nos viene a la mente es la de agrupar, durante el proceso de ETL, en el origen de datos o en el editor de consultas, la tabla de ventas a la granularidad deseada, es decir, aquella que coincide con la del presupuesto. Si no queremos (o no podemos) modificar los datos ya cargados en el modelo, siempre podemos <strong>utilizar DAX como herramienta de modelado<\/strong> para resolver este tipo de escenarios. <span class=\"tlid-translation translation\" lang=\"es\"><span title=\"\">Aprovechando el lenguaje DAX, podemos crear modelos muy avanzados con pr\u00e1cticamente cualquier tipo de relaci\u00f3n, lo que nos proporcionar\u00e1 una importante flexibilidad en el dise\u00f1o de los mismos.<\/span><\/span><br \/><\/span><\/p>\n<p>\u00a0<\/p>\n<h4>Relaciones virtuales con DAX<\/h4>\n<p>Imaginemos que disponemos del siguiente esquema dimensional para el proceso de ventas de una empresa:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/imagen-1-1-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1022\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/imagen-1-1-1.png?resize=629%2C319&#038;ssl=1\" alt=\"\" width=\"629\" height=\"319\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/imagen-1-1-1.png?w=1165&amp;ssl=1 1165w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/imagen-1-1-1.png?resize=300%2C152&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/imagen-1-1-1.png?resize=768%2C390&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/imagen-1-1-1.png?resize=1024%2C519&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/imagen-1-1-1.png?resize=900%2C457&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Y el presupuesto de ventas del a\u00f1o 2019 que nos proporcionan para integrar en el modelo es el siguiente:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/presexcel-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"center wp-image-1023  aligncenter\" style=\"display: block; margin-left: auto; margin-right: auto; width: 50%;\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/presexcel-1.png?resize=341%2C589&#038;ssl=1\" alt=\"\" width=\"341\" height=\"589\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/presexcel-1.png?w=305&amp;ssl=1 305w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/presexcel-1.png?resize=174%2C300&amp;ssl=1 174w\" sizes=\"auto, (max-width: 341px) 100vw, 341px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>En el modelo, cada registro de la tabla de ventas est\u00e1 relacionado con un producto y una fecha en concreto, al contrario que en el presupuesto, donde las agrupaciones de ambas dimensiones est\u00e1n definidas a un nivel jer\u00e1rquico superior, la categor\u00eda de producto y el mes del a\u00f1o. Tenemos que <strong>trabajar por tanto con datos a distintas granularidades<\/strong>, que nos impiden definir<span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\"> relaciones f\u00edsicas, porque ninguna de las tablas involucradas tiene una columna que satisfaga la condici\u00f3n de unicidad requerida por una relaci\u00f3n de uno-a-varios.<\/span><\/span><\/p>\n<p>En estos casos podemos utilizar DAX para definir <strong>relaciones virtuales<\/strong> entre los atributos dimensionales y las categor\u00edas del presupuesto al nivel correspondiente.<\/p>\n<p>Para ello es conveniente disponer, en nuestra dimensi\u00f3n temporal y en nuestra tabla de presupuesto, de una columna que agrupe el mes y el a\u00f1o correspondientes a cada registro. Podemos a\u00f1adir dicha columna en el editor de consultas con M:<\/p>\n<pre>A\u00f1oMesNumerosA\u00f1adido = Table.AddColumn(Origen, \"A\u00f1oMesNumeros\", each [A\u00f1o]*100 + [MesNumero])<\/pre>\n<p>O hacerlo con DAX directamente en la consulta ya cargada en el modelo:<\/p>\n<p>A\u00f1oMesNumeros\u00a0=<br \/>Calendario[A\u00f1o]\u00a0*\u00a0<span class=\"Number\" style=\"color: #ee7f18;\">100<\/span>\u00a0+\u00a0Calendario[MesNumero]<\/p>\n<p>Tras realizar la misma operaci\u00f3n en el presupuesto, podemos usar la funci\u00f3n <code>TREATAS()<\/code> para <span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">transferir un contexto de filtro de una tabla a otra, <strong>simulando el comportamiento de una relaci\u00f3n f\u00edsica<\/strong> definida en el modelo de datos:<\/span><\/span><\/p>\n<p>VentasPresupuestas2019\u00a0=<br \/><span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">SUM<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[Ventas]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">TREATAS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[A\u00f1oMesNumeros]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;\u00a0<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Presupuesto[A\u00f1oMesNumeros] <span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">TREATAS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;\u00a0<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Presupuesto[Categoria] <span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p>Si la versi\u00f3n de DAX que estamos utilizando no soporta la funci\u00f3n <code>TREATAS()<\/code> , podemos utilizar la funci\u00f3n <code>INTERSECT()<\/code> para transferir el contexto de filtro de la misma manera:<\/p>\n<p>INTERSECTVentasPresup2019\u00a0=<br \/><span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">SUM<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[Ventas]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">INTERSECT<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[A\u00f1oMesNumeros]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[A\u00f1oMesNumeros]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">INTERSECT<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p>Por \u00faltimo, si nuestra versi\u00f3n tampoco soporta <code>INTERSECT()<\/code>, siempre podemos recurrir al uso de <code>FILTER()<\/code> y <code>CONTAINS()<\/code> para obtener el mismo resultado. Eso s\u00ed, pagando un precio mayor respecto al rendimiento:<\/p>\n<p>FILTERVentasPresup2019\u00a0=<br \/><span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">SUM<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[Ventas]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">FILTER<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[A\u00f1oMesNumeros]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">CONTAINS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[A\u00f1oMesNumeros]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span>Calendario[A\u00f1oMesNumeros];\u00a0Presupuesto[A\u00f1oMesNumeros]<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">FILTER<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">CONTAINS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span>Productos[Categoria];\u00a0Presupuesto[Categoria]<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p>De las 3 formas obtendremos el mismo resultado:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/3formas-1-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1029 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/3formas-1-1.png?resize=609%2C631&#038;ssl=1\" alt=\"\" width=\"609\" height=\"631\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/3formas-1-1.png?w=609&amp;ssl=1 609w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/3formas-1-1.png?resize=290%2C300&amp;ssl=1 290w\" sizes=\"auto, (max-width: 609px) 100vw, 609px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Ya podemos explorar los datos relativos a las <strong>ventas reales, presupuestadas y las desviaciones experimentadas<\/strong> en una misma visualizaci\u00f3n, y a la granularidad con la que se definieron los presupuestos:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/vtasypres2019-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1028\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/vtasypres2019-1.png?resize=415%2C535&#038;ssl=1\" alt=\"\" width=\"415\" height=\"535\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/vtasypres2019-1.png?w=415&amp;ssl=1 415w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/vtasypres2019-1.png?resize=233%2C300&amp;ssl=1 233w\" sizes=\"auto, (max-width: 415px) 100vw, 415px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>En los ejemplos anteriores hemos utilizado la columna calculada <code>A\u00f1osMesNumeros<\/code> para propagar los filtros de nuestra dimensi\u00f3n temporal, pero tambi\u00e9n podemos realizar la misma operaci\u00f3n utilizando las 2 columnas por separado, sin necesidad de combinarlas en una sola. El siguiente c\u00f3digo realiza la misma operaci\u00f3n<strong> utilizando las 2 columnas presentes originalmente en el modelo<\/strong>, usando <code>TEATRAS()<\/code>, l<span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">a mejor manera de implementar una relaci\u00f3n virtual en t\u00e9rminos de rendimiento:<\/span><\/span><\/p>\n<p>TREATAS2col\u00a0=<br \/><span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">SUM<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[Ventas]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">TREATAS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">SUMMARIZE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario;\u00a0Calendario[A\u00f1o];\u00a0Calendario[MesNumero]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>Presupuesto[A\u00f1o];<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>Presupuesto[MesNumero]<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">TREATAS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;\u00a0Presupuesto[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p>Con cualquiera de estas t\u00e9cnicas obtenemos la posibilidad de integrar en nuestro an\u00e1lisis el presupuesto al nivel de detalle definido en el mismo. Si el usuario selecciona un contexto de filtro no disponible en el presupuesto para obtener un an\u00e1lisis m\u00e1s granular, como por ejemplo si profundiza a nivel de producto en la matriz anterior, el valor de <span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">la medida se repite para cada producto, lo que <strong>puede causar interpretaciones <\/strong><strong>err\u00f3neas<\/strong>:<br \/><\/span><\/span><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/masgranular-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1033\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/masgranular-1.png?resize=513%2C641&#038;ssl=1\" alt=\"\" width=\"513\" height=\"641\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/masgranular-1.png?w=513&amp;ssl=1 513w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/masgranular-1.png?resize=240%2C300&amp;ssl=1 240w\" sizes=\"auto, (max-width: 513px) 100vw, 513px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">El mismo problema surge si el usuario intenta segmentar los datos por cualquier atributo de dimensiones no incluidas en el presupuesto, como las de Clientes o Empleados. En estos casos, si no se dispone de un algoritmo <\/span><\/span>que nos permita asignar o distribuir los valores calculados del presupuesto para granularidades inferiores a las definidas, siempre es mejor <span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">usar una t\u00e9cnica para<strong> mostrar u ocultar medidas seg\u00fan el nivel de granularidad de los datos subyacentes<\/strong>, con el objetivo de evitar<\/span><span title=\"\"><span class=\"\" title=\"\"> mostrar el presupuesto en contextos de filtro para los que no se encuentra disponible.<\/span><\/span><\/span><\/p>\n<p>Para hacer esto, podemos crear una medida que <strong>verifique <\/strong><span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\"><strong> que el n\u00famero de registros activos en cada tabla del modelo de datos<\/strong> sea igual al n\u00famero de filas en la misma tabla, que, a su vez, corresponda a la granularidad de la tabla del presupuesto en el mismo contexto de filtro.<\/span> <span title=\"\">Por ejemplo, el n\u00famero de filas en la tabla Producto se calcula con la funci\u00f3n <code>CALCULATE()<\/code>, que modifica el contexto de filtro en la tabla Productos utilizando la funci\u00f3n <code>ALLEXCEPT()<\/code>, eliminando cualquier filtro que no sea la columna Categor\u00eda, que es la \u00fanica referencia a la dimensi\u00f3n Productos que tenemos en la<\/span><span title=\"\"> tabla de presupuesto.<\/span> Tras realizar la misma comprobaci\u00f3n con el resto de tablas con alg\u00fan atributo disponible en nuestros pron\u00f3sticos, si queremos <strong>comprobar tambi\u00e9n el uso de atributos de dimensiones no incluidas<\/strong>, deberemos <span title=\"\">comparar el n\u00famero de filas en el contexto de filtro, con el n\u00famero de filas de toda la tabla<\/span>. En nuestro caso, el c\u00f3digo a implementar es el siguiente:<\/span><\/p>\n<p>EsPresupuestoOK\u00a0=<br \/><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>=\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALLEXCEPT<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos;\u00a0Productos[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span>&amp;&amp;<span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span>=\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[A\u00f1oMesNumeros]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span>&amp;&amp;<span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Clientes\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0=\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Clientes\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span>&amp;&amp;<span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Empleados\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0=\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Empleados\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span>&amp;&amp;<span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Pais\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0=\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">COUNTROWS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Pais\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">Finalmente, podemos crear la medida que mostrar\u00e1 el valor del presupuesto <strong>solamente cuando el contexto de filtro definido por el usuario corresponda a una granularidad disponible<\/strong> en la tabla de presupuesto, devolviendo <span title=\"\"><code>BLANK()<\/code><\/span> en caso contrario:<br \/><\/span><\/span><\/p>\n<p>Presupuesto2019\u00a0:=<br \/><span class=\"Keyword\" style=\"color: #0070ff;\">IF<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0[EsPresupuestoOK];\u00a0Ventas[VentasPresup2019];\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">BLANK<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">La siguiente imagen muestra los valores de <code>Presupuesto2019<\/code> por mes, categor\u00eda y producto. Como podemos ver, al nivel de producto, el presupuesto no muestra ning\u00fan importe, porque <strong>no se verifica la comparaci\u00f3n <\/strong>que hemos definido program\u00e1ticamente.<\/span><\/span><\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/blancos-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1038\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/blancos-1.png?resize=440%2C606&#038;ssl=1\" alt=\"\" width=\"440\" height=\"606\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/blancos-1.png?w=440&amp;ssl=1 440w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/blancos-1.png?resize=218%2C300&amp;ssl=1 218w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">Todas estas t\u00e9cnicas se basan en propagar filtros a lo largo del modelo de datos mediante la creaci\u00f3n de relaciones virtuales entre atributos dimensionales entre los que, aun existiendo una relaci\u00f3n l\u00f3gica, <strong>no es posible establecer una relaci\u00f3n f\u00edsica,<\/strong> al no cumplir ninguna de las columnas el requisito de estar constituida por valores \u00fanicos. Este enfoque es correcto si la cardinalidad de la relaci\u00f3n es relativamente baja o si se trata de un modelo de datos complejo donde relaciones f\u00edsicas adicionales pueden generar referencias circulares u otros efectos secundarios no deseados. <\/span><\/span><\/p>\n<p><span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">En casos contrarios debemos siempre<strong> considerar la posibilidad de implementar dimensiones puente<\/strong> que nos permitan establecer relaciones f\u00edsicas. A continuaci\u00f3n, profundizaremos en las posibilidades de integraci\u00f3n de previsiones presupuestarias mediante este m\u00e9todo y aprovecharemos para implementar <strong>algoritmos que nos permitan asignar o distribuir nuestras previsiones<\/strong> a granularidades distintas a las detalladas en el presupuesto.<br \/><\/span><\/span><\/p>\n<p>\u00a0<\/p>\n<h4>Relaciones varios-a-varios con dimensiones auxiliares y asignaci\u00f3n de valores a granularidades no disponibles<\/h4>\n<p>Imagin\u00e9monos que disponemos de la siguiente tabla de presupuesto de ventas anual, con detalle por categor\u00eda de producto y pa\u00eds del cliente, y con 3 escenarios para los importes del mismo:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/presanual-2-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1047\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/presanual-2-1.png?resize=581%2C748&#038;ssl=1\" alt=\"\" width=\"581\" height=\"748\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/presanual-2-1.png?w=581&amp;ssl=1 581w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/presanual-2-1.png?resize=233%2C300&amp;ssl=1 233w\" sizes=\"auto, (max-width: 581px) 100vw, 581px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Como podemos observar, la \u00fanica granularidad temporal de la que disponemos es el a\u00f1o, desconocemos por completo la distribuci\u00f3n trimestral o mensual de las ventas, por lo que <strong>el potencial anal\u00edtico que nos proporciona el presupuesto es verdaderamente escaso<\/strong>. Necesitamos, nuevamente, trabajar con datos a distintas granularidades y encontrar una forma de proyectar las ventas presupuestadas al nivel de granularidad temporal deseado.<\/p>\n<p>Antes de ello, vamos a encargarnos de establecer el escenario del presupuesto como un atributo m\u00e1s, de manera que tengamos un registro por cada combinaci\u00f3n de categor\u00eda, pa\u00eds y escenario. Esta tarea es muy sencilla, solo tenemos que <strong>anular la dinamizaci\u00f3n<\/strong> de las columnas correspondientes en el editor de consultas y conseguiremos el resultado deseado:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/unpivot-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1049\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/unpivot-1.png?resize=629%2C728&#038;ssl=1\" alt=\"\" width=\"629\" height=\"728\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/unpivot-1.png?w=676&amp;ssl=1 676w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/unpivot-1.png?resize=259%2C300&amp;ssl=1 259w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Volviendo al aspecto temporal de nuestro presupuesto, una t\u00e9cnica simple de asignaci\u00f3n consiste en dividir el importe anual presupuestado entre 12, para disponer de los importes mensuales, pero a no ser que se trate de una empresa con una demanda tremendamente estable, ser\u00eda una soluci\u00f3n bastante problem\u00e1tica. Una mejor idea es redistribuir el presupuesto con el <strong>mismo porcentaje de asignaci\u00f3n mensual producido el a\u00f1o anterior en las ventas reales<\/strong>, de manera que esperemos una estacionalidad similar a la ya ocurrida.<\/p>\n<p>Para llevar esto a cabo, construiremos con DAX una <strong>tabla de presupuesto mensual<\/strong>, que, manteniendo la granularidad en la categor\u00eda de producto, el pa\u00eds del cliente y el escenario presupuestado, nos permita redistribuir mensualmente nuestras previsiones. Vamos a ver el c\u00f3digo completo y a continuaci\u00f3n lo explicamos:<\/p>\n<p><span class=\"Keyword\" style=\"color: #0070ff;\">EVALUATE<\/span><br \/><span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATETABLE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">FILTER<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ADDCOLUMNS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ADDCOLUMNS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ADDCOLUMNS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ADDCOLUMNS<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">GENERATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[Escenario]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">CROSSJOIN<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">CROSSJOIN<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">DISTINCT<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;\u00a0<br \/><span class=\"Keyword\" style=\"color: #0070ff;\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 DISTINCT<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Clientes[Pais]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">DISTINCT<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[MesNumero]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"StringLiteral\" style=\"color: #d93124;\">\u00abVentas\u00bb<\/span>;\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <span class=\"Keyword\" style=\"color: #0070ff;\">SUMX<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Ventas;<br \/>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Ventas[Cantidad] * Ventas[Precio] <span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"StringLiteral\" style=\"color: #d93124;\">\u00abVentasAnuales\u00bb<\/span>;\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">SUMX<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Ventas;\u00a0Ventas[Cantidad]\u00a0*\u00a0Ventas[Precio]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[MesNumero]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"StringLiteral\" style=\"color: #d93124;\">\u00abPorcentaje\u00bb<\/span>;\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">DIVIDE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0[Ventas];\u00a0[VentasAnuales]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"StringLiteral\" style=\"color: #d93124;\">\u00abPresupuestoAnual\u00bb<\/span>;\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">LOOKUPVALUE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>Presupuesto[Presupuesto2019];<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>Presupuesto[Categoria];\u00a0Productos[Categoria];<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>Presupuesto[Pais];\u00a0Clientes[Pais];<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>Presupuesto[Escenario];\u00a0Presupuesto[Escenario]<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"StringLiteral\" style=\"color: #d93124;\">\u00abPresupuestoMensual\u00bb<\/span>;\u00a0[PresupuestoAnual]\u00a0*\u00a0[Porcentaje]<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"StringLiteral\" style=\"color: #d93124;\">\u00abFecha\u00bb<\/span>;\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">DATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Number\" style=\"color: #ee7f18;\">2019<\/span>;\u00a0[MesNumero];\u00a0<span class=\"Number\" style=\"color: #ee7f18;\">1<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>[Ventas]\u00a0&gt;\u00a0<span class=\"Number\" style=\"color: #ee7f18;\">0<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">FILTER<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0<span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[A\u00f1o]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;\u00a0Calendario[A\u00f1o]\u00a0=\u00a0<span class=\"Number\" style=\"color: #ee7f18;\">2018<\/span>\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p>Resumiendo, con este c\u00f3digo lo que hacemos es, en primer lugar, crear una consulta con <strong>todas las combinaciones existentes entre los atributos presentes en nuestro presupuesto y el mes del a\u00f1o<\/strong>, y a continuaci\u00f3n calculamos las ventas del a\u00f1o 2018 correspondientes a cada registro de dicha consulta. Posteriormente, calculamos las ventas anuales (mediante la eliminaci\u00f3n del filtro de <code>MesNumero<\/code> con la funci\u00f3n <code>ALL()<\/code>) para seguidamente, calcular el porcentaje que del total anual de ventas ha supuesto cada mes del a\u00f1o 2018. M\u00e1s tarde, aplicamos dicho porcentaje a nuestro presupuesto anual (incorporado en nuestra consulta mediante la funci\u00f3n <code>LOOKUPVALUE()<\/code>) para finalmente,<strong> con el objetivo de poder establecer una relaci\u00f3n f\u00edsica con nuestra dimensi\u00f3n temporal,<\/strong> crear otra columna para asignar a cada registro el primer d\u00eda del mes correspondiente. Ya tenemos nuestra consulta de presupuesto mensual incorporada en el modelo:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/relations1-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1060\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/relations1-1.png?resize=629%2C441&#038;ssl=1\" alt=\"\" width=\"629\" height=\"441\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/relations1-1.png?w=1054&amp;ssl=1 1054w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/relations1-1.png?resize=300%2C210&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/relations1-1.png?resize=768%2C538&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/relations1-1.png?resize=1024%2C718&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/relations1-1.png?resize=900%2C631&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Una vez realizado el paso anterior, todav\u00eda nos encontramos con alg\u00fan problema. Al igual que antes, necesitamos poder establecer relaciones con las tablas de Productos y Clientes, con el fin de poder segmentar, mediante el uso de los atributos de dichas dimensiones, nuestras ventas reales y presupuestadas en una misma visualizaci\u00f3n. En este caso, no vamos a establecer relaciones virtuales mediante el uso de <code>TREATAS()<\/code> u otras funciones como hicimos en el apartado anterior, ahora vamos a <strong>introducir relaciones f\u00edsicas en el modelo de datos mediante la creaci\u00f3n de dimensiones auxiliares con valores \u00fanicos<\/strong>, que act\u00faen como puente entre las tablas de b\u00fasqueda y el presupuesto.<\/p>\n<p>Para crear una dimensi\u00f3n auxiliar del pa\u00eds del cliente que nos permita establecer una relaci\u00f3n f\u00edsica entre la tabla Clientes y nuestro presupuesto mensual, creamos una nueva tabla calculada con el siguiente c\u00f3digo:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paises-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1062\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paises-1.png?resize=629%2C559&#038;ssl=1\" alt=\"\" width=\"629\" height=\"559\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paises-1.png?w=629&amp;ssl=1 629w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paises-1.png?resize=300%2C267&amp;ssl=1 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Una vez tenemos nuestra tabla de valores \u00fanicos podemos establecer las relaciones con la dimensi\u00f3n correspondiente y con el presupuesto:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesrelacionsimple-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1063\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesrelacionsimple-1.png?resize=629%2C448&#038;ssl=1\" alt=\"\" width=\"629\" height=\"448\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesrelacionsimple-1.png?w=1001&amp;ssl=1 1001w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesrelacionsimple-1.png?resize=300%2C214&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesrelacionsimple-1.png?resize=768%2C547&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesrelacionsimple-1.png?resize=900%2C641&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Utilizando la columna Pa\u00eds de nuestra tabla auxiliar podemos segmentar correctamente tanto las ventas como el presupuesto con sus distintos escenarios:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesenpuente-1-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1096\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesenpuente-1-1.png?resize=337%2C559&#038;ssl=1\" alt=\"\" width=\"337\" height=\"559\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesenpuente-1-1.png?w=337&amp;ssl=1 337w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/paisesenpuente-1-1.png?resize=181%2C300&amp;ssl=1 181w\" sizes=\"auto, (max-width: 337px) 100vw, 337px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Llegados a este punto, a pesar de que el modelo funciona correctamente, desde la \u00f3ptica del usuario resulta extra\u00f1o, y aunque ocultemos en la vista de informes el atributo Pa\u00eds de la dimensi\u00f3n Clientes es probable que se pregunte: \u00bfpor qu\u00e9 tengo algunos atributos correspondientes a los clientes en una tabla y el pa\u00eds lo tengo en otra?<\/p>\n<p>Para que <strong>el modelo siga siendo intuitivo para el usuario final<\/strong> podemos habilitar la direcci\u00f3n de filtro cruzado entre la dimensi\u00f3n Clientes y nuestra tabla auxiliar:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/circulobi-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1067\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/circulobi-1.png?resize=629%2C441&#038;ssl=1\" alt=\"\" width=\"629\" height=\"441\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/circulobi-1.png?w=995&amp;ssl=1 995w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/circulobi-1.png?resize=300%2C210&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/circulobi-1.png?resize=768%2C538&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/circulobi-1.png?resize=900%2C630&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Realizando la misma tarea para la dimensi\u00f3n Productos, podremos <strong>ocultar definitivamente nuestras tablas auxiliares<\/strong> en la vista de informes, puesto que simplemente las hemos utilizado para propagar los filtros a la tabla de presupuesto, y el usuario podr\u00e1 utilizar los atributos desde su dimensi\u00f3n original para filtrar y segmentar las tablas de hechos sin ning\u00fan problema. El modelo quedar\u00eda finalmente de la siguiente manera:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/modelofinal-1-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1069\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/modelofinal-1-1.png?resize=629%2C441&#038;ssl=1\" alt=\"\" width=\"629\" height=\"441\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/modelofinal-1-1.png?w=997&amp;ssl=1 997w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/modelofinal-1-1.png?resize=300%2C210&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/modelofinal-1-1.png?resize=768%2C538&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/modelofinal-1-1.png?resize=900%2C631&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p><span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\">La activaci\u00f3n del filtro cruzado bidireccional en un modelo de datos tabular es una decisi\u00f3n que hay que tomar con mucha cautela, puede crear rutas ambiguas en la cadena de relaciones y resultar en <strong>modelos muy peligrosos en los que los n\u00fameros se vuelven impredecibles.<\/strong><\/span><\/span><\/p>\n<p>En este caso, no estamos tratando de establecer una relaci\u00f3n entre dos dimensiones (lo que podr\u00edamos denominar una relaci\u00f3n varios-a-varios en un sentido estricto), si no solamente resolver el problema de la <strong>incompatibilidad de granularidad entre una dimensi\u00f3n y una tabla de hechos<\/strong>. Ahora, si nos centramos en las categor\u00edas de producto, <span class=\"tlid-translation translation\" lang=\"es\"><span title=\"\">todas las medidas reciben el contexto de filtro de la tabla puente en caso de que se seleccione una o m\u00e1s categor\u00edas.<\/span> <span title=\"\">Si no hay filtros activos en dicho atributo, el filtro no se aplica, por lo que solamente pagamos<\/span><span class=\"\" title=\"\"> el precio de la propagaci\u00f3n del filtro de forma bidireccional cuando esto es imprescindible.<\/span><\/span><\/p>\n<p>En realidad, ya no es necesario crear este tipo de tablas puente para resolver el problema. Desde que Microsoft introdujo los modelos compuestos en Power BI, tambi\u00e9n existe la posibilidad de usar una relaci\u00f3n de varios-a-varios directamente entre dos tablas sin necesidad de habilitar el modo bidireccional como podemos ver en la siguiente imagen, aunque dejaremos este tema para una articulo posterior sobre las denominadas <strong>\u00abrelaciones d\u00e9biles\u00bb en Power BI<\/strong>:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/m2m-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1098\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/m2m-1.png?resize=629%2C379&#038;ssl=1\" alt=\"\" width=\"629\" height=\"379\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/m2m-1.png?w=709&amp;ssl=1 709w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/m2m-1.png?resize=300%2C181&amp;ssl=1 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Volviendo a nuestro modelo, \u00bfqu\u00e9 ocurre si el usuario intenta segmentar los datos en funci\u00f3n de<strong> otros atributos dimensionales no disponibles<\/strong> en nuestro presupuesto? pues al igual que en el apartado anterior de este art\u00edculo, donde cre\u00e1bamos relaciones virtuales para solventar el problema de trabajar con informaci\u00f3n a distinta granularidad, los resultados no ser\u00edan correctos.<\/p>\n<p>Para solucionar esta situaci\u00f3n podemos recurrir, al igual que en dicho apartado, a mostrar las medidas solo en aquellos casos en los que la granularidad sea la correcta, es decir, est\u00e9 disponible en nuestras previsiones presupuestarias, mediante el c\u00e1lculo de una medida similar a <span class=\"tlid-translation translation\" lang=\"es\"><span class=\"\" title=\"\"><span title=\"\"><code>EsPresupuestOK<\/code>, o<\/span><\/span><\/span>, an\u00e1logamente a lo realizado con la dimensi\u00f3n temporal en este apartado, <strong>proyectar los importes hacia los dem\u00e1s atributos de ambas dimensiones<\/strong> en funci\u00f3n de las proporciones que podemos deducir de las ventas reales del a\u00f1o anterior. En el siguiente apartado vamos a realizar dicho proceso <strong>de forma din\u00e1mica<\/strong>, sin materializar los resultados en una nueva consulta.<\/p>\n<p>\u00a0<\/p>\n<h4><strong>Asignaci\u00f3n <\/strong>din\u00e1mica de previsiones presupuestarias a atributos dimensionales no disponibles en el presupuesto<\/h4>\n<p>En este apartado volvemos a utilizar la tabla de presupuesto anual original, dejando de lado el presupuesto mensual creado por nosotros con DAX.<\/p>\n<p>Primero, tenemos que <strong>calcular el porcentaje con el que asignaremos los importes presupuestados al resto de atributos de las dimensiones presentes en el presupuesto.<\/strong> Para ello, utilizamos una vez m\u00e1s las ventas reales del a\u00f1o anterior, dividi\u00e9ndolas entre dichas ventas calculadas a la granularidad en la que se elabor\u00f3 el presupuesto originalmente:<\/p>\n<p>Pct\u00a0=<br \/><span class=\"Keyword\" style=\"color: #0070ff;\">DIVIDE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span>[Ventas2018];<br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">CALCULATE<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span><br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span>[Ventas2018];<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Productos[Categoria]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Clientes\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">VALUES<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Clientes[Pais]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[MesNumero]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>;<br \/><span class=\"indent8\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Keyword\" style=\"color: #0070ff;\">ALL<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Calendario[Mes]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"indent4\">\u00a0\u00a0\u00a0\u00a0<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><br \/><span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span><\/p>\n<p>\u00a0<\/p>\n<p>Y posteriormente, aplicamos el porcentaje calculado al importe presupuestado:<\/p>\n<p>PresupDin2019\u00a0=<br \/><span class=\"Keyword\" style=\"color: #0070ff;\">SUM<\/span><span class=\"Parenthesis\" style=\"color: #969696;\">\u00a0(<\/span>\u00a0Presupuesto[Presupuesto2019]\u00a0<span class=\"Parenthesis\" style=\"color: #969696;\">)<\/span>\u00a0*\u00a0[Pct]<\/p>\n<p>\u00a0<\/p>\n<p>De esta forma, <strong>no necesitamos precalcular los valores de forma est\u00e1tica<\/strong> y materializarnos en el modelo de datos para usarlos posteriormente, si no que podemos utilizar DAX para calcular los valores sobre la marcha, durante el tiempo de procesamiento de nuestras medidas. Con este \u00faltimo c\u00e1lculo podemos asignar, <strong>de una forma completamente din\u00e1mica<\/strong> y bas\u00e1ndonos en las ventas del a\u00f1o anterior, los importes presupuestados a la granularidad que nos interese en cada momento, pudiendo filtrar y segmentar nuestras medidas mediante el uso de cualquier atributo dimensional:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/final-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1106\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/final-1.png?resize=521%2C819&#038;ssl=1\" alt=\"\" width=\"521\" height=\"819\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/final-1.png?w=521&amp;ssl=1 521w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/final-1.png?resize=191%2C300&amp;ssl=1 191w\" sizes=\"auto, (max-width: 521px) 100vw, 521px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<h4>Yendo un poco m\u00e1s lejos<\/h4>\n<p>Una vez tenemos nuestras previsiones presupuestarias completamente integradas en el modelo de datos, podemos seguir usando DAX para mucho m\u00e1s. Por ejemplo, mediante la <strong>aplicaci\u00f3n de factores de correcci\u00f3n<\/strong> al presupuesto, basados en las desviaciones experimentadas entre los importes reales y los pron\u00f3sticos, podemos <strong>ajustar din\u00e1micamente las previsiones<\/strong> y obtener visualizaciones como la siguiente, donde la diferencia entre los valores reales y presupuestados de enero a marzo se utiliza para modificar el presupuesto de ventas del resto del a\u00f1o:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/image-1-2-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1074\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/image-1-2-1.png?resize=629%2C275&#038;ssl=1\" alt=\"\" width=\"629\" height=\"275\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/image-1-2-1.png?w=834&amp;ssl=1 834w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/image-1-2-1.png?resize=300%2C131&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/image-1-2-1.png?resize=768%2C336&amp;ssl=1 768w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<p>Si los presupuestos que se realizan en la empresa son m\u00e1s completos, es decir, se presupuestan tambi\u00e9n unidades de producto o servicio, costes, tama\u00f1o y cuota de mercado etc&#8230; es relativamente sencillo dise\u00f1ar herramientas completas de control presupuestario en Power BI, que nos proporcionar\u00e1n la capacidad de <strong>analizar minuciosamente las causas de las desviaciones experimentadas bas\u00e1ndonos en los componentes del denominado presupuesto flexible<\/strong>, para interpretar dichas desviaciones de manera correcta y facilitar el dise\u00f1o e implantaci\u00f3n de planes para la correcci\u00f3n de las mismas cuando estas pongan en peligro la obtenci\u00f3n del resultado presupuestado:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1132\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=629%2C334&#038;ssl=1\" alt=\"\" width=\"629\" height=\"334\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?w=1755&amp;ssl=1 1755w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=300%2C159&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=768%2C408&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=1024%2C544&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=900%2C478&amp;ssl=1 900w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/07\/desviaciones-1.png?resize=1280%2C680&amp;ssl=1 1280w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>\u00a0<\/p>\n<h4>Conclusiones<\/h4>\n<p><strong>El modelo tabular es realmente potente<\/strong>. En este art\u00edculo hemos visto c\u00f3mo podemos utilizar DAX para crear modelos de datos relativamente complejos sin necesidad de importar informaci\u00f3n adicional, manejar de forma coherente informaci\u00f3n a distinta granularidad y construir completas <strong>soluciones de control presupuestario, herramienta clave para el control de gesti\u00f3n,<\/strong> en funci\u00f3n de los datos disponibles.<\/p>\n<p>Las<strong> capacidades de modelado de datos de Power BI<\/strong> son las que verdaderamente le diferencian de otras herramientas populares que existen en el mercado y con las que habitualmente se compara, pero que en realidad solo act\u00faan como instrumentos de <em>reporting.<\/em> Power BI nos ofrece una soluci\u00f3n completa de modelado y visualizaci\u00f3n de datos, con un conjunto cada d\u00eda m\u00e1s amplio de capacidades para dise\u00f1ar y enriquecer modelos formados por informaci\u00f3n proveniente de m\u00faltiples or\u00edgenes distintos, e integrarla de forma congruente entre s\u00ed, con el prop\u00f3sito de facilitar la <strong>toma de decisiones en tiempo real y a todos los niveles de la organizaci\u00f3n<\/strong>.<\/p>\n<hr \/>\n<p><span style=\"color: #000000;\"><strong><em>Este art\u00edculo utiliza visualizaciones de Zebra BI. Puedes descargarlas en periodo de prueba en: <a href=\"https:\/\/zebrabi.com\/pbi-free-trial\/\">https:\/\/zebrabi.com\/pbi-free-trial\/<\/a><\/em><\/strong><\/span><\/p>\n<blockquote>\n<p><span style=\"color: #808080;\">Todo el c\u00f3digo DAX de este art\u00edculo ha sido formateado con<em> \u00abDAX Formatter\u00bb <\/em><\/span><br \/><a href=\"http:\/\/www.daxformatter.com?utm_source=badge-dark&amp;utm_medium=ad&amp;utm_campaign=embed\"><img data-recalc-dims=\"1\" decoding=\"async\" src=\"https:\/\/i0.wp.com\/www.daxformatter.com\/wp-content\/themes\/daxformatter\/images\/daxformatter-badge-small-dark.png?w=629\" alt=\"DAX Formatter by SQLBI\" \/><\/a><\/p>\n<\/blockquote>\n<div>\u00a0<\/div>\n<div>\u00a0<\/div>\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n 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\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[2,3,4],"tags":[33,19,20,8,9,11,31,36,14,24,28],"post_series":[],"class_list":["post-1002","post","type-post","status-publish","format-standard","hentry","category-arquitectura-de-datos","category-controlling-dir-financiera","category-dax-power-pivot","tag-bism","tag-contabilidad-analitica","tag-control-de-gestion","tag-controlling-dir-financiera","tag-dax","tag-inteligencia-de-negocios","tag-modelado-de-datos","tag-modelado-dimensional","tag-power-bi","tag-presupuestacion","tag-previsiones"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n 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\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Admin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"es_ES\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Business Intelligence Controlling | La nueva generaci\u00f3n del reporting econ\u00f3mico-financiero y el control de gesti\u00f3n empresarial\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling\" \/>\n\t\t<meta property=\"og:description\" content=\"Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n 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\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-07-04T11:50:03+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-26T10:18:20+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n 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\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#article\",\"name\":\"Integraci\\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling\",\"headline\":\"Integraci\\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI\",\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/bicontrolling.com\\\/wp-content\\\/uploads\\\/2019\\\/06\\\/imagen-1-1-1.png?fit=1165%2C591&ssl=1\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#articleImage\",\"width\":1165,\"height\":591},\"datePublished\":\"2019-07-04T11:50:03+02:00\",\"dateModified\":\"2020-10-26T11:18:20+01:00\",\"inLanguage\":\"es-ES\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#webpage\"},\"articleSection\":\"Arquitectura de datos, Controlling \\\/ Dir. Financiera, DAX, BISM, Contabilidad anal\\u00edtica, Control de gesti\\u00f3n, Controlling \\\/ Dir. Financiera, DAX, Inteligencia de negocios, Modelado de datos, modelado dimensional, Power BI, Presupuestaci\\u00f3n, Previsiones\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#listItem\",\"position\":1,\"name\":\"Inicio\",\"item\":\"https:\\\/\\\/bicontrolling.com\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/category\\\/arquitectura-de-datos\\\/#listItem\",\"name\":\"Arquitectura de datos\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/category\\\/arquitectura-de-datos\\\/#listItem\",\"position\":2,\"name\":\"Arquitectura de datos\",\"item\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/category\\\/arquitectura-de-datos\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#listItem\",\"name\":\"Integraci\\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#listItem\",\"name\":\"Inicio\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#listItem\",\"position\":3,\"name\":\"Integraci\\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/category\\\/arquitectura-de-datos\\\/#listItem\",\"name\":\"Arquitectura de datos\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\",\"name\":\"Business Intelligence Controlling\",\"description\":\"La nueva generaci\\u00f3n del reporting econ\\u00f3mico-financiero y el control de gesti\\u00f3n empresarial\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/\",\"name\":\"Admin\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#webpage\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/\",\"name\":\"Integraci\\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling\",\"description\":\"Introducci\\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\\u00e1s desafiantes en el campo del dise\\u00f1o y explotaci\\u00f3n 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\\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2019\\\/07\\\/04\\\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2019-07-04T11:50:03+02:00\",\"dateModified\":\"2020-10-26T11:18:20+01:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#website\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/\",\"name\":\"Business Intelligence Controlling\",\"description\":\"La nueva generaci\\u00f3n del reporting econ\\u00f3mico-financiero y el control de gesti\\u00f3n empresarial\",\"inLanguage\":\"es-ES\",\"publisher\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling","description":"Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n 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\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un","canonical_url":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#article","name":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling","headline":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI","author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/bicontrolling.com\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/imagen-1-1-1.png?fit=1165%2C591&ssl=1","@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#articleImage","width":1165,"height":591},"datePublished":"2019-07-04T11:50:03+02:00","dateModified":"2020-10-26T11:18:20+01:00","inLanguage":"es-ES","mainEntityOfPage":{"@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#webpage"},"isPartOf":{"@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#webpage"},"articleSection":"Arquitectura de datos, Controlling \/ Dir. Financiera, DAX, BISM, Contabilidad anal\u00edtica, Control de gesti\u00f3n, Controlling \/ Dir. Financiera, DAX, Inteligencia de negocios, Modelado de datos, modelado dimensional, Power BI, Presupuestaci\u00f3n, Previsiones"},{"@type":"BreadcrumbList","@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/#listItem","position":1,"name":"Inicio","item":"https:\/\/bicontrolling.com\/","nextItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/#listItem","name":"Arquitectura de datos"}},{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/#listItem","position":2,"name":"Arquitectura de datos","item":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/","nextItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#listItem","name":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI"},"previousItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/#listItem","name":"Inicio"}},{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#listItem","position":3,"name":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI","previousItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/#listItem","name":"Arquitectura de datos"}}]},{"@type":"Organization","@id":"https:\/\/bicontrolling.com\/#organization","name":"Business Intelligence Controlling","description":"La nueva generaci\u00f3n del reporting econ\u00f3mico-financiero y el control de gesti\u00f3n empresarial","url":"https:\/\/bicontrolling.com\/"},{"@type":"Person","@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author","url":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/","name":"Admin"},{"@type":"WebPage","@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#webpage","url":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/","name":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling","description":"Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n 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\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/bicontrolling.com\/#website"},"breadcrumb":{"@id":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/#breadcrumblist"},"author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"creator":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"datePublished":"2019-07-04T11:50:03+02:00","dateModified":"2020-10-26T11:18:20+01:00"},{"@type":"WebSite","@id":"https:\/\/bicontrolling.com\/#website","url":"https:\/\/bicontrolling.com\/","name":"Business Intelligence Controlling","description":"La nueva generaci\u00f3n del reporting econ\u00f3mico-financiero y el control de gesti\u00f3n empresarial","inLanguage":"es-ES","publisher":{"@id":"https:\/\/bicontrolling.com\/#organization"}}]},"og:locale":"es_ES","og:site_name":"Business Intelligence Controlling | La nueva generaci\u00f3n del reporting econ\u00f3mico-financiero y el control de gesti\u00f3n empresarial","og:type":"article","og:title":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling","og:description":"Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n 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\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un","og:url":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/","article:published_time":"2019-07-04T11:50:03+00:00","article:modified_time":"2020-10-26T10:18:20+00:00","twitter:card":"summary","twitter:title":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI | Business Intelligence Controlling","twitter:description":"Introducci\u00f3n El modelado de previsiones presupuestarias constituye uno de los escenarios m\u00e1s desafiantes en el campo del dise\u00f1o y explotaci\u00f3n 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\u00eda xVelocity (previamente denominada VertiPaq); de hecho, al ejecutar un"},"aioseo_meta_data":{"post_id":"1002","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-31 11:38:39","updated":"2025-06-04 11:51:55","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bicontrolling.com\/\" title=\"Inicio\">Inicio<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/\" title=\"Arquitectura de datos\">Arquitectura de datos<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">\u00bb<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tIntegraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Inicio","link":"https:\/\/bicontrolling.com\/"},{"label":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},{"label":"Integraci\u00f3n de previsiones presupuestarias y otros datos a diferente granularidad en Power BI","link":"https:\/\/bicontrolling.com\/index.php\/2019\/07\/04\/presupuestos-y-otros-datos-a-diferente-granularidad-en-power-bi\/"}],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1828,"url":"https:\/\/bicontrolling.com\/index.php\/2021\/03\/06\/gppb2021-madrid-integracion-de-previsiones-y-presupuestos-en-el-modelo-tabular-video\/","url_meta":{"origin":1002,"position":0},"title":"GPPB2021 Madrid &#8211; Integraci\u00f3n de previsiones y presupuestos en el modelo tabular (video)","author":"Admin","date":"6 marzo, 2021","format":false,"excerpt":"Ya est\u00e1n disponibles las grabaciones del Global Power Platform Bootcamp de Madrid. Os comparto el video de mi sesi\u00f3n donde estuvimos analizando las diferentes opciones que tenemos para integrar previsiones y presupuestos en un modelo de datos de Power BI. Vimos c\u00f3mo crear relaciones virtuales con DAX, c\u00f3mo inspeccionar el\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/_wGEZZGP_nI\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":816,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/08\/23\/medidas-semi-aditivas-en-dax\/","url_meta":{"origin":1002,"position":1},"title":"Medidas semi-aditivas en DAX","author":"Admin","date":"23 agosto, 2018","format":false,"excerpt":"En cualquier sistema de BI, podemos crear c\u00e1lculos o medidas de 3 tipos distintos: Medidas aditivas: son generalmente la mayor parte de las medidas que nos encontraremos en un modelo de datos anal\u00edtico, y se caracterizan porque podemos usar la funci\u00f3n SUM() para agregar sus valores en funci\u00f3n de cualquier\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/04\/image-1-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/04\/image-1-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/04\/image-1-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/04\/image-1-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1942,"url":"https:\/\/bicontrolling.com\/index.php\/2022\/04\/12\/video-power-bi-quizz-pensando-en-dax\/","url_meta":{"origin":1002,"position":2},"title":"Video Power BI Quizz Pensando en DAX","author":"Admin","date":"12 abril, 2022","format":false,"excerpt":"Os dejo el video de mi participaci\u00f3n en el Power BI Quizz de los grandes Ricardo Rinc\u00f3n y Raquel Alvear. Un autentico placer haber podido aportar mi granito de arena a esta iniciativa.","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/11\/Portada-Power-BI-Quizz.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/11\/Portada-Power-BI-Quizz.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/11\/Portada-Power-BI-Quizz.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/11\/Portada-Power-BI-Quizz.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/11\/Portada-Power-BI-Quizz.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/11\/Portada-Power-BI-Quizz.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":813,"url":"https:\/\/bicontrolling.com\/index.php\/2019\/06\/12\/textos-y-titulos-dinamicos-en-power-bi\/","url_meta":{"origin":1002,"position":3},"title":"Textos y t\u00edtulos din\u00e1micos en Power BI","author":"Admin","date":"12 junio, 2019","format":false,"excerpt":"Textos din\u00e1micos con DAX Siempre me ha gustado crear medidas de texto que sean capaces de interpretar y explicar ciertos resultados en lenguaje natural al usuario. Creando expresiones DAX mediante el uso de variables, campos y otros elementos program\u00e1ticos conseguiremos que, en funci\u00f3n de los filtros seleccionados por el usuario,\u2026","rel":"","context":"En \u00abControlling \/ Dir. Financiera\u00bb","block_context":{"text":"Controlling \/ Dir. Financiera","link":"https:\/\/bicontrolling.com\/index.php\/category\/controlling-dir-financiera\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/ezgif.com-crop3-1.gif?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/ezgif.com-crop3-1.gif?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/ezgif.com-crop3-1.gif?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/06\/ezgif.com-crop3-1.gif?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1568,"url":"https:\/\/bicontrolling.com\/index.php\/2020\/04\/19\/mostrar-la-ultima-fecha-de-actualizacion-en-power-bi\/","url_meta":{"origin":1002,"position":4},"title":"Mostrar la \u00faltima fecha de actualizaci\u00f3n en Power BI","author":"Admin","date":"19 abril, 2020","format":false,"excerpt":"Introducci\u00f3n En numerosas ocasiones, la primera pregunta que nos hace un usuario de un informe en Power BI es \u00bfest\u00e1n 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 \u00faltima actualizaci\u00f3n de los\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/04\/Imagen-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/04\/Imagen-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/04\/Imagen-1.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":783,"url":"https:\/\/bicontrolling.com\/index.php\/2019\/01\/24\/analisis-economico-financiero-en-power-bi1\/","url_meta":{"origin":1002,"position":5},"title":"An\u00e1lisis econ\u00f3mico-financiero en Power BI","author":"Admin","date":"24 enero, 2019","format":false,"excerpt":"Introducci\u00f3n Los informes econ\u00f3mico-financieros, basados principalmente en las normas de registro y valoraci\u00f3n de los diferentes elementos que componen los estados que deben elaborarse bajo el Plan General de Contabilidad, han sido hist\u00f3ricamente un proceso complejo y est\u00e1tico, que proporciona informaci\u00f3n limitada y con horizontes temporales predefinidos (cierre trimestral, anual...).\u2026","rel":"","context":"En \u00abArquitectura de datos\u00bb","block_context":{"text":"Arquitectura de datos","link":"https:\/\/bicontrolling.com\/index.php\/category\/arquitectura-de-datos\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/03\/Desviaciones.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/03\/Desviaciones.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/03\/Desviaciones.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/03\/Desviaciones.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/03\/Desviaciones.png?resize=1050%2C600&ssl=1 3x"},"classes":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/1002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/comments?post=1002"}],"version-history":[{"count":30,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/1002\/revisions"}],"predecessor-version":[{"id":1714,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/1002\/revisions\/1714"}],"wp:attachment":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/media?parent=1002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/categories?post=1002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/tags?post=1002"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/post_series?post=1002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}