{"id":2111,"date":"2023-10-26T19:01:49","date_gmt":"2023-10-26T17:01:49","guid":{"rendered":"https:\/\/bicontrolling.com\/?p=2111"},"modified":"2023-12-14T12:29:34","modified_gmt":"2023-12-14T11:29:34","slug":"trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas","status":"publish","type":"post","link":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/","title":{"rendered":"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas en Power BI"},"content":{"rendered":"\n<h3 class=\"wp-block-heading\">Introducci\u00f3n<\/h3>\n\n\n\n<p>Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas \u00abdesde-hasta\u00bb o de intervalo de fechas. Estas son un <strong>tipo de estructura muy vers\u00e1til<\/strong> <strong>que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre determinados periodos de tiempo. <\/strong><\/p>\n\n\n\n<p>Sus usos son muy variados, ya que este tipo de estructura proporciona un almacenamiento y procesamiento altamente eficientes en un sistema transaccional. Almacenar de esta forma los datos <strong>minimiza la redundancia y optimiza el almacenamiento <\/strong>al eliminar la necesidad de duplicar registros para cada instancia de tiempo. Algunos de los escenarios en los que nos encontraremos con este tipo de tablas son:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Sistemas de reservas y programaci\u00f3n de eventos<\/li>\n\n\n\n<li>Gesti\u00f3n de RRHH<\/li>\n\n\n\n<li>Planificaci\u00f3n de campa\u00f1as de Marketing<\/li>\n\n\n\n<li>Gesti\u00f3n de contratos<\/li>\n\n\n\n<li>Listados de tarifas<\/li>\n\n\n\n<li>Gesti\u00f3n de casos e incidencias<\/li>\n<\/ul>\n\n\n\n<p>En este art\u00edculo vamos a <strong>explorar las distintas formas de modelar y analizar este tipo de tablas,<\/strong> teniendo en consideraci\u00f3n aspectos relacionados con el rendimiento de las consultas y el tama\u00f1o de los datos almacenados.<\/p>\n\n\n\n<!--more-->\n\n\n\n<h3 class=\"wp-block-heading\">Usando Power Query para expandir la tabla<\/h3>\n\n\n\n<p>En caso de que la tabla en cuesti\u00f3n sea muy ligera podemos implementar una soluci\u00f3n sencilla que consiste en expandir <strong>la tabla, de modo que tengamos una fila para cada d\u00eda entre las fechas de inicio y final del rango temporal asociado a cada registro.<\/strong> Para ello, creamos una nueva columna que contendr\u00e1, para cada celda, una lista de las fechas que existen entre los dos extremos del rango:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#A6ACCD;--cbp-line-number-width:7.703125px;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"= Table.AddColumn(#&quot;Otras columnas quitadas&quot;, &quot;Fecha&quot;, \neach { \nNumber.From([FechaInicio])..Number.From([FechaFin])\n})\" style=\"color:#A6ACCD;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #FFCB6B\">Table<\/span><span style=\"color: #A6ACCD\">.AddColumn<\/span><span style=\"color: #89DDFF\">(#&quot;<\/span><span style=\"color: #FFCB6B\">Otras columnas quitadas<\/span><span style=\"color: #89DDFF\">&quot;,<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #C3E88D\">Fecha<\/span><span style=\"color: #89DDFF\">&quot;<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #A6ACCD\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #F78C6C\">each<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">{<\/span><span style=\"color: #A6ACCD\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">Number<\/span><span style=\"color: #A6ACCD\">.From<\/span><span style=\"color: #89DDFF\">([<\/span><span style=\"color: #FFCB6B\">FechaInicio<\/span><span style=\"color: #89DDFF\">])..<\/span><span style=\"color: #A6ACCD\">Number.From<\/span><span style=\"color: #89DDFF\">([<\/span><span style=\"color: #FFCB6B\">FechaFin<\/span><span style=\"color: #89DDFF\">])<\/span><\/span>\n<span class=\"line\"><span style=\"color: #89DDFF\">})<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#0F111A;color:#969dc4;font-size:12px;line-height:1;position:relative\">Power Query<\/span><\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>A continuaci\u00f3n, solo nos queda expandir las listas en nuevas filas y cambiar el tipo de dato de la columna resultante a Fecha, y ya tendremos el resultado deseado:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"359\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-2.png?resize=629%2C359&#038;ssl=1\" alt=\"\" class=\"wp-image-2124\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-2.png?w=665&amp;ssl=1 665w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-2.png?resize=300%2C171&amp;ssl=1 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Si utilizamos esta t\u00e9cnica <strong>hay que tener en cuenta que en ocasiones las fechas de inicio o de fin pueden contener valores <code>null<\/code><\/strong>, por lo que tendremos que reemplazarlos por una fecha que consideremos que cumple con los requisitos de negocio. Esto podemos realizarlo antes de llevar a cabo el paso anterior o directamente en el c\u00f3digo del mismo. Por ejemplo, en el siguiente c\u00f3digo, para a\u00f1adir una columna comprobamos si la fecha final es <code>null<\/code> y en tal caso le asignamos a la variable <code>FechaFin<\/code> la fecha actual.  Posteriormente, generamos las listas de fechas que expandiremos en nuevas filas para obtener el resultado deseado:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#A6ACCD;--cbp-line-number-width:15.40625px;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#0F111A\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"let\n    _FechaInicio = [FechaInicio],\n    _FechaFin = if [FechaFin] = null \n      then Date.From(DateTime.LocalNow()) \n      else [FechaFin]\n\nin \nList.Generate(()=&gt; \n    [x=_FechaInicio], each [x]&lt;=_FechaFin, \n    each [x=Date.AddDays([x],1)],each [x]))\" style=\"color:#A6ACCD;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki material-theme-ocean\" style=\"background-color: #0F111A\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #F78C6C\">let<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">    <\/span><span style=\"color: #FFCB6B\">_FechaInicio<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #FFCB6B\">FechaInicio<\/span><span style=\"color: #89DDFF\">],<\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">    <\/span><span style=\"color: #FFCB6B\">_FechaFin<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF; font-style: italic\">if<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #FFCB6B\">FechaFin<\/span><span style=\"color: #89DDFF\">]<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">null<\/span><span style=\"color: #A6ACCD\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">      <\/span><span style=\"color: #89DDFF; font-style: italic\">then<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #FFCB6B\">Date<\/span><span style=\"color: #A6ACCD\">.From<\/span><span style=\"color: #89DDFF\">(<\/span><span style=\"color: #FFCB6B\">DateTime<\/span><span style=\"color: #A6ACCD\">.LocalNow<\/span><span style=\"color: #89DDFF\">())<\/span><span style=\"color: #A6ACCD\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">      <\/span><span style=\"color: #89DDFF; font-style: italic\">else<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #FFCB6B\">FechaFin<\/span><span style=\"color: #89DDFF\">]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #F78C6C\">in<\/span><span style=\"color: #A6ACCD\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #FFCB6B\">List<\/span><span style=\"color: #A6ACCD\">.Generate<\/span><span style=\"color: #89DDFF\">(()=&gt;<\/span><span style=\"color: #A6ACCD\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">    <\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #FFCB6B\">x<\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #FFCB6B\">_FechaInicio<\/span><span style=\"color: #89DDFF\">],<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #F78C6C\">each<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #FFCB6B\">x<\/span><span style=\"color: #89DDFF\">]&lt;=<\/span><span style=\"color: #FFCB6B\">_FechaFin<\/span><span style=\"color: #89DDFF\">,<\/span><span style=\"color: #A6ACCD\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #A6ACCD\">    <\/span><span style=\"color: #F78C6C\">each<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #FFCB6B\">x<\/span><span style=\"color: #89DDFF\">=<\/span><span style=\"color: #FFCB6B\">Date<\/span><span style=\"color: #A6ACCD\">.AddDays<\/span><span style=\"color: #89DDFF\">([<\/span><span style=\"color: #FFCB6B\">x<\/span><span style=\"color: #89DDFF\">],<\/span><span style=\"color: #F78C6C\">1<\/span><span style=\"color: #89DDFF\">)],<\/span><span style=\"color: #F78C6C\">each<\/span><span style=\"color: #A6ACCD\"> <\/span><span style=\"color: #89DDFF\">[<\/span><span style=\"color: #FFCB6B\">x<\/span><span style=\"color: #89DDFF\">]))<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#0F111A;color:#969dc4;font-size:12px;line-height:1;position:relative\">Power Query<\/span><\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Como hemos comentado, estas t\u00e9cnicas solo son v\u00e1lidas si la tabla con la que estamos trabajando es realmente peque\u00f1a. El hecho de crear una columna con la lista de fechas asociadas a cada registro<strong> es una transformaci\u00f3n que nunca har\u00e1 <em>Query Folding <\/em>sobre el origen de datos, por lo que tenemos que ser muy cuidadosos y solo aplicarla en casos muy concretos. <\/strong><\/p>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Usando DAX para analizar sobre la tabla de intervalos de fecha<\/h3>\n\n\n\n<p>En caso de que estemos trabajando con una tabla que contenga un n\u00famero importante de registros y no podamos \u00abaplanarla\u00bb en el origen de datos, <strong>las t\u00e9cnicas anteriores no van a ser aplicables, al menos sin pagar un alt\u00edsimo precio en tiempo de actualizaci\u00f3n de la consulta.<\/strong><\/p>\n\n\n\n<p>Para estos casos podemos utilizar perfectamente el lenguaje DAX para analizar nuestros datos sin necesidad de transformar previamente la tabla de intervalos de fecha.<\/p>\n\n\n\n<p>Para desarrollar el ejemplo vamos a utilizar un caso muy com\u00fan, las listas de precios por cliente, art\u00edculo y rango temporal, y vamos a introducir alguna complejidad adicional. <\/p>\n\n\n\n<p>Imaginemos el siguiente escenario. Disponemos de una lista de precios, con mas de 1 mill\u00f3n de registros, en la que <strong>se detalla el precio asociado a cada cliente y art\u00edculo en un periodo de tiempo.<\/strong> La tabla tambi\u00e9n dispone de registros en los que se especifica un precio \u00fanico para el cliente y el rango temporal, sin especificar ning\u00fan art\u00edculo.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"240\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-3.png?resize=629%2C240&#038;ssl=1\" alt=\"\" class=\"wp-image-2128\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-3.png?w=1007&amp;ssl=1 1007w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-3.png?resize=300%2C115&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-3.png?resize=768%2C294&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-3.png?resize=900%2C344&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>El requisito de negocio consiste en <strong>obtener con una medida, es decir, sin necesidad de materializar ning\u00fan c\u00e1lculo en nuestro modelo<\/strong>, la media aritm\u00e9tica del precio, teniendo en cuenta que si existe un precio para un cliente y un rango temporal tanto con art\u00edculo como sin art\u00edculo, se tomar\u00e1 como v\u00e1lido el que si dispone de art\u00edculo, y en caso contrario, el que no tiene art\u00edculo asociado.<\/p>\n\n\n\n<p>Podemos ver el modelo con el que trabajamos en la siguiente imagen. Cabe resaltar que no hemos establecido ninguna relaci\u00f3n entre la tabla de tarifas y la dimensi\u00f3n temporal: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"489\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-5.png?resize=629%2C489&#038;ssl=1\" alt=\"\" class=\"wp-image-2130\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-5.png?w=754&amp;ssl=1 754w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-5.png?resize=300%2C233&amp;ssl=1 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Vamos a visualizar el c\u00f3digo completo que resuelve nuestro requisito de negocio, y a continuaci\u00f3n lo comentamos:<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro padding-bottom-disabled cbp-has-line-numbers\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;--cbp-line-number-color:#D4D4D4;--cbp-line-number-width:15.40625px;line-height:1.25rem\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#1E1E1E\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"Precio medio =\nAVERAGEX (\n    FILTER (\n        'Ventas',\n        'Ventas'[CategoriaEntrada] = &quot;ActualSales&quot;\n    ),\n    VAR _FechaLinea = 'Ventas'[Fecha]\n    VAR _Cliente = 'Ventas'[IdCliente]\n    VAR _Articulo = 'Ventas'[IdArticulo]\n    VAR _PrecioConArticulo =\n        CALCULATE (\n            AVERAGE ( 'Tarifas'[Precio] ),\n            FILTER (\n                ALL (\n                    'Tarifas'[FechaInicio],\n                    'Tarifas'[FechaFin]\n                ),\n                'Tarifas'[FechaInicio] &lt;= _FechaLinea\n                    &amp;&amp; 'Tarifas'[FechaFin] &gt;= _FechaLinea\n            ),\n            'Tarifas'[TipoRegistro] = &quot;Con Articulo&quot;\n        )\n    VAR _PrecioSinArticulo =\n        CALCULATE (\n            AVERAGE ( 'Tarifas'[Precio] ),\n            FILTER (\n                ALL (\n                    'Tarifas'[FechaInicio],\n                    'Tarifas'[FechaFin]\n                ),\n                'Tarifas'[FechaInicio] &lt;= _FechaLinea\n                    &amp;&amp; 'Tarifas'[FechaFin] &gt;= _FechaLinea\n            ),\n            'Tarifas'[TipoRegistro] = &quot;Sin Articulo&quot;,\n            CROSSFILTER ( 'Art\u00edculos'[IdArticulo], \n                          'Tarifas'[IdArticulo],\n                           NONE \n           )\n        )\n    RETURN\n        IF (\n            NOT ISBLANK ( _PrecioConArticulo ),\n            _PrecioConArticulo,\n            _PrecioSinArticulo\n        )\n)\" style=\"color:#D4D4D4;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki dark-plus\" style=\"background-color: #1E1E1E\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #4FC1FF\">Precio<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">medio<\/span><span style=\"color: #D4D4D4\"> =<\/span><\/span>\n<span class=\"line\"><span style=\"color: #569CD6\">AVERAGEX<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #569CD6\">FILTER<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #4EC9B0\">&#39;Ventas&#39;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #4EC9B0\">&#39;Ventas&#39;<\/span><span style=\"color: #DCDCAA\">[CategoriaEntrada]<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&quot;ActualSales&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">VAR<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">_FechaLinea<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #4EC9B0\">&#39;Ventas&#39;<\/span><span style=\"color: #DCDCAA\">[Fecha]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">VAR<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">_Cliente<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #4EC9B0\">&#39;Ventas&#39;<\/span><span style=\"color: #DCDCAA\">[IdCliente]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">VAR<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">_Articulo<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #4EC9B0\">&#39;Ventas&#39;<\/span><span style=\"color: #DCDCAA\">[IdArticulo]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">VAR<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">_PrecioConArticulo<\/span><span style=\"color: #D4D4D4\"> =<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">CALCULATE<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">AVERAGE<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[Precio]<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">FILTER<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">ALL<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[FechaInicio]<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[FechaFin]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[FechaInicio]<\/span><span style=\"color: #D4D4D4\"> &lt;= <\/span><span style=\"color: #4FC1FF\">_FechaLinea<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    &amp;&amp; <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[FechaFin]<\/span><span style=\"color: #D4D4D4\"> &gt;= <\/span><span style=\"color: #4FC1FF\">_FechaLinea<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[TipoRegistro]<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&quot;Con Articulo&quot;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">VAR<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #4FC1FF\">_PrecioSinArticulo<\/span><span style=\"color: #D4D4D4\"> =<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">CALCULATE<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">AVERAGE<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[Precio]<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">FILTER<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #569CD6\">ALL<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[FechaInicio]<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[FechaFin]<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[FechaInicio]<\/span><span style=\"color: #D4D4D4\"> &lt;= <\/span><span style=\"color: #4FC1FF\">_FechaLinea<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                    &amp;&amp; <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[FechaFin]<\/span><span style=\"color: #D4D4D4\"> &gt;= <\/span><span style=\"color: #4FC1FF\">_FechaLinea<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[TipoRegistro]<\/span><span style=\"color: #D4D4D4\"> = <\/span><span style=\"color: #CE9178\">&quot;Sin Articulo&quot;<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">CROSSFILTER<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #4EC9B0\">&#39;Art\u00edculos&#39;<\/span><span style=\"color: #DCDCAA\">[IdArticulo]<\/span><span style=\"color: #D4D4D4\">, <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                          <\/span><span style=\"color: #4EC9B0\">&#39;Tarifas&#39;<\/span><span style=\"color: #DCDCAA\">[IdArticulo]<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">                           <\/span><span style=\"color: #4FC1FF\">NONE<\/span><span style=\"color: #D4D4D4\"> <\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">           )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">    <\/span><span style=\"color: #C586C0\">RETURN<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        <\/span><span style=\"color: #569CD6\">IF<\/span><span style=\"color: #D4D4D4\"> (<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #569CD6\">NOT<\/span><span style=\"color: #D4D4D4\"> <\/span><span style=\"color: #569CD6\">ISBLANK<\/span><span style=\"color: #D4D4D4\"> ( <\/span><span style=\"color: #4FC1FF\">_PrecioConArticulo<\/span><span style=\"color: #D4D4D4\"> ),<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #4FC1FF\">_PrecioConArticulo<\/span><span style=\"color: #D4D4D4\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">            <\/span><span style=\"color: #4FC1FF\">_PrecioSinArticulo<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">        )<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D4D4D4\">)<\/span><\/span><\/code><\/pre><span style=\"display:flex;align-items:flex-end;padding:10px;width:100%;justify-content:flex-end;background-color:#1E1E1E;color:#c7c7c7;font-size:12px;line-height:1;position:relative\">DAX<\/span><\/div>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>Con este c\u00f3digo lo que hacemos es, en primer lugar, <strong>crear un contexto de fila en la tabla de Ventas mediante el iterador <code>AVERAGEX<\/code><\/strong>, y filtramos dicha tabla para solamente tener en cuenta los registros de las ventas reales, ya que en la tabla se han integrado tambi\u00e9n las previsiones.<\/p>\n\n\n\n<p>Seguidamente, definimos algunas variables que utilizaremos en <code>_PrecioConArticulo<\/code> y <code>_PrecioSinArticulo<\/code>; variables en las que buscamos los precios asociados a la fecha del registro de la venta, filtrando la tabla de tarifas con la condici\u00f3n de que dicha fecha se encuentre entre los valores de <code>FechaInicio<\/code> y <code>FechaFin<\/code>. Cabe enfatizar que en estas variables no hemos tenido que a\u00f1adir las condiciones que filtran la tabla para el cliente y el art\u00edculo asociados al registro actual; ya que <strong>como estamos ejecutando la funci\u00f3n <code>CALCULATE<\/code> en un contexto de fila, la transici\u00f3n del contexto que se produce y que transforma el contexto de fila en un contexto de filtro equivalente, propaga los filtros desde ambas dimensiones a la tabla de tarifas.<\/strong><\/p>\n\n\n\n<p>Es muy importante notar que, en el caso de la variable <code>_PrecioSinArticulo<\/code>, tenemos que utilizar la funci\u00f3n <code>CROSSFILTER<\/code> para desactivar la relaci\u00f3n f\u00edsica establecida a trav\u00e9s de la clave primaria de la dimensi\u00f3n <code>Art\u00edculos.<\/code><\/p>\n\n\n\n<p>Finalmente, devolvemos el <code>_PrecioConArticulo<\/code> en el caso de que este exista, y en caso contrario, el <code>_PrecioSinArticulo<\/code>.<\/p>\n\n\n\n<p>De esta forma, podremos usar esta medida en cualquier contexto sin problemas, y sin necesidad de transformar la tabla ni materializar ninguna columna calculada en nuestro modelo:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-7.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" width=\"629\" height=\"185\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-7.png?resize=629%2C185&#038;ssl=1\" alt=\"\" class=\"wp-image-2136\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-7.png?resize=1024%2C301&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-7.png?resize=300%2C88&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-7.png?resize=768%2C226&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-7.png?resize=900%2C265&amp;ssl=1 900w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-7.png?resize=1280%2C377&amp;ssl=1 1280w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-7.png?w=1441&amp;ssl=1 1441w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/figure>\n\n\n\n<div style=\"height:60px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<p>En el pr\u00f3ximo art\u00edculo veremos como llevar esta t\u00e9cnica un poco m\u00e1s all\u00e1 utilizando la funci\u00f3n <code>TREATAS<\/code> <strong>para establecer relaciones virtuales en el caso de que existan registros de precios que no dependan de las columnas de relaci\u00f3n<\/strong>, en este caso el <code>IdCliente<\/code> y el <code>IdArticulo<\/code>, sino que utilicen otros atributos dimensionales para la asignaci\u00f3n del precio.<\/p>\n\n\n\n<p>&nbsp;<\/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>&nbsp;<\/div>\n<div>&nbsp;<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas \u00abdesde-hasta\u00bb o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","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":[],"post_series":[],"class_list":["post-2111","post","type-post","status-publish","format-standard","hentry","category-arquitectura-de-datos","category-controlling-dir-financiera","category-dax-power-pivot"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas &quot;desde-hasta&quot; o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre\" \/>\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\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\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=\"Trabajando con tablas \u2018desde-hasta\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling\" \/>\n\t\t<meta property=\"og:description\" content=\"Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas &quot;desde-hasta&quot; o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2023-10-26T17:01:49+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2023-12-14T11:29:34+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Trabajando con tablas \u2018desde-hasta\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas &quot;desde-hasta&quot; o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre\" \/>\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\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#article\",\"name\":\"Trabajando con tablas \\u2018desde-hasta\\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling\",\"headline\":\"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas en Power BI\",\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"https:\\\/\\\/i0.wp.com\\\/bicontrolling.com\\\/wp-content\\\/uploads\\\/2023\\\/08\\\/image-2.png?fit=665%2C380&ssl=1\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#articleImage\",\"width\":665,\"height\":380},\"datePublished\":\"2023-10-26T19:01:49+02:00\",\"dateModified\":\"2023-12-14T12:29:34+01:00\",\"inLanguage\":\"es-ES\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#webpage\"},\"articleSection\":\"Arquitectura de datos, Controlling \\\/ Dir. Financiera, DAX\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#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\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#listItem\",\"name\":\"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas en Power BI\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com#listItem\",\"name\":\"Inicio\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#listItem\",\"position\":3,\"name\":\"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas 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\\\/vlozanoluque_sg8t8mat\\\/#author\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/\",\"name\":\"Admin\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/00c17f691e05a0999c7ea23a9ae4aa6e7ae25f55cd91ae9629fe81a02ae98278?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Admin\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#webpage\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/\",\"name\":\"Trabajando con tablas \\u2018desde-hasta\\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling\",\"description\":\"Introducci\\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\\u00edtico corresponde a las tablas \\\"desde-hasta\\\" o de intervalo de fechas. Estas son un tipo de estructura muy vers\\u00e1til que utilizan las bases de datos para representar y gestionar informaci\\u00f3n relacionada con valores aplicables entre\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2023\\\/10\\\/26\\\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/vlozanoluque_sg8t8mat\\\/#author\"},\"datePublished\":\"2023-10-26T19:01:49+02:00\",\"dateModified\":\"2023-12-14T12:29:34+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":"Trabajando con tablas \u2018desde-hasta\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling","description":"Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas \"desde-hasta\" o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre","canonical_url":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#article","name":"Trabajando con tablas \u2018desde-hasta\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling","headline":"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas en Power BI","author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/#author"},"publisher":{"@id":"https:\/\/bicontrolling.com\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2023\/08\/image-2.png?fit=665%2C380&ssl=1","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#articleImage","width":665,"height":380},"datePublished":"2023-10-26T19:01:49+02:00","dateModified":"2023-12-14T12:29:34+01:00","inLanguage":"es-ES","mainEntityOfPage":{"@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#webpage"},"isPartOf":{"@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#webpage"},"articleSection":"Arquitectura de datos, Controlling \/ Dir. Financiera, DAX"},{"@type":"BreadcrumbList","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#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\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#listItem","name":"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas en Power BI"},"previousItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com#listItem","name":"Inicio"}},{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#listItem","position":3,"name":"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas 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\/vlozanoluque_sg8t8mat\/#author","url":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/","name":"Admin","image":{"@type":"ImageObject","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/00c17f691e05a0999c7ea23a9ae4aa6e7ae25f55cd91ae9629fe81a02ae98278?s=96&d=mm&r=g","width":96,"height":96,"caption":"Admin"}},{"@type":"WebPage","@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#webpage","url":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/","name":"Trabajando con tablas \u2018desde-hasta\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling","description":"Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas \"desde-hasta\" o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/bicontrolling.com\/#website"},"breadcrumb":{"@id":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/#breadcrumblist"},"author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/#author"},"creator":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/vlozanoluque_sg8t8mat\/#author"},"datePublished":"2023-10-26T19:01:49+02:00","dateModified":"2023-12-14T12:29:34+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":"Trabajando con tablas \u2018desde-hasta\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling","og:description":"Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas &quot;desde-hasta&quot; o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre","og:url":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/","article:published_time":"2023-10-26T17:01:49+00:00","article:modified_time":"2023-12-14T11:29:34+00:00","twitter:card":"summary","twitter:title":"Trabajando con tablas \u2018desde-hasta\u2019 o de rango de fechas en Power BI | Business Intelligence Controlling","twitter:description":"Introducci\u00f3n Uno de los tipos de tabla que nos encontramos frecuentemente a la hora de crear un modelo de datos anal\u00edtico corresponde a las tablas &quot;desde-hasta&quot; o de intervalo de fechas. Estas son un tipo de estructura muy vers\u00e1til que utilizan las bases de datos para representar y gestionar informaci\u00f3n relacionada con valores aplicables entre"},"aioseo_meta_data":{"post_id":"2111","title":null,"description":null,"keywords":[],"keyphrases":{"focus":{"keyphrase":"","score":0,"analysis":{"keyphraseInTitle":{"score":0,"maxScore":9,"error":1}}},"additional":[]},"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":"","og_custom_url":null,"og_article_section":null,"og_article_tags":[],"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":"Article","isEnabled":true},"graphs":[]},"schema_type":"default","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":"-1","robots_max_videopreview":"-1","robots_max_imagepreview":"large","priority":null,"frequency":"default","location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2023-08-09 12:30:03","updated":"2025-06-04 12:56:06","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\">&raquo;<\/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\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tTrabajando con tablas \u2018desde-hasta\u2019 o de rango de fechas 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":"Trabajando con tablas &#8216;desde-hasta&#8217; o de rango de fechas en Power BI","link":"https:\/\/bicontrolling.com\/index.php\/2023\/10\/26\/trabajando-con-tablas-desde-hasta-o-de-rango-de-fechas\/"}],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":362,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/06\/28\/desnormalizando-consultas-de-forma-eficiente\/","url_meta":{"origin":2111,"position":0},"title":"Estructuras de datos en entornos anal\u00edticos","author":"Admin","date":"28 junio, 2018","format":false,"excerpt":"Cuando dise\u00f1amos un modelo de datos anal\u00edtico, uno de los aspectos clave a tener en cuenta corresponde al nivel de normalizaci\u00f3n\/desnormalizaci\u00f3n con que queremos dotar a la estructura del mismo. Es probable que la mayor\u00eda de los or\u00edgenes de datos que utilicemos a nivel profesional correspondan a sistemas de procesamiento\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\/2018\/02\/image-3-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/02\/image-3-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/02\/image-3-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/02\/image-3-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/02\/image-3-1.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":2236,"url":"https:\/\/bicontrolling.com\/index.php\/2026\/02\/03\/las-tablas-padre-hijo-y-el-reporting-economico-financiero\/","url_meta":{"origin":2111,"position":1},"title":"Las tablas padre-hijo y el reporting econ\u00f3mico-financiero en Power BI","author":"Admin","date":"3 febrero, 2026","format":false,"excerpt":"Introducci\u00f3n En el \u00e1mbito del reporting econ\u00f3mico-financiero hay algo incuestionable: las estructuras nunca son definitivas. Las organizaciones evolucionan, cambian los criterios de an\u00e1lisis y aparecen nuevas necesidades de informaci\u00f3n que obligan a revisar continuamente la forma en que se presentan los estados financieros. Esta situaci\u00f3n se hace especialmente evidente en\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\/2026\/02\/image-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2026\/02\/image-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2026\/02\/image-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2026\/02\/image-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":464,"url":"https:\/\/bicontrolling.com\/index.php\/2017\/12\/10\/tablas-de-medidas-en-power-bi-desktop\/","url_meta":{"origin":2111,"position":2},"title":"Grupos de medidas en Power BI Desktop","author":"Admin","date":"10 diciembre, 2017","format":false,"excerpt":"En numerosas ocasiones, cuando estamos trabajando con modelos de datos complejos, con muchas tablas y relaciones, y que requieren un n\u00famero considerable de medidas, es importante tener en cuenta el lugar de almacenamiento de las mismas. Por ejemplo, es probable que tras cargar al modelo de datos todas las consultas\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\/2018\/04\/image-9-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/04\/image-9-1.png?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":760,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/12\/13\/header-detail\/","url_meta":{"origin":2111,"position":3},"title":"Estructuras jer\u00e1rquicas en tablas de hechos","author":"Admin","date":"13 diciembre, 2018","format":false,"excerpt":"Introducci\u00f3n Un escenario muy frecuente cuando utilizamos bases de datos relacionales como origen principal de un modelo que reproduce un proceso de negocio, como pueden ser las ventas de una empresa, es encontrarnos con dos tablas de hechos con distinta granularidad para describir el mismo proceso. Una de ellas contendr\u00e1\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\/image-7-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/03\/image-7-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/03\/image-7-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2019\/03\/image-7-1.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":1769,"url":"https:\/\/bicontrolling.com\/index.php\/2020\/12\/09\/crear-dimension-horaria-en-dax\/","url_meta":{"origin":2111,"position":4},"title":"Crear dimensi\u00f3n horaria en DAX","author":"Admin","date":"9 diciembre, 2020","format":false,"excerpt":"Introducci\u00f3n En una entrada anterior vimos c\u00f3mo, en escenarios donde tanto los atributos relacionados con la fecha como los relacionados con la hora son relevantes para el an\u00e1lisis que queremos realizar, pod\u00edamos crear una dimensi\u00f3n horaria en M que nos sirviera para filtrar y segmentar nuestras medidas en funci\u00f3n de\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\/12\/Imagen-34.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/12\/Imagen-34.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/12\/Imagen-34.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2020\/12\/Imagen-34.png?resize=700%2C400&ssl=1 2x"},"classes":[]},{"id":608,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/07\/25\/userelationship-en-columnas-calculadas\/","url_meta":{"origin":2111,"position":5},"title":"Uso de la funci\u00f3n USERELATIONSHIP en columnas calculadas","author":"Admin","date":"25 julio, 2018","format":false,"excerpt":"Introducci\u00f3n En un modelo tabular con relaciones inactivas podemos usar la funci\u00f3n USERELATIONSHIP() para activar una de ellas durante el tiempo de ejecuci\u00f3n de un determinado c\u00e1lculo con DAX. Para ello, simplemente tenemos que especificar dicha funci\u00f3n (y los par\u00e1metros correspondientes) como uno de los argumentos de filtro de la\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\/2018\/08\/image-121-1.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/08\/image-121-1.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\/2111","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\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/comments?post=2111"}],"version-history":[{"count":24,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/2111\/revisions"}],"predecessor-version":[{"id":2294,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/2111\/revisions\/2294"}],"wp:attachment":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/media?parent=2111"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/categories?post=2111"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/tags?post=2111"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/post_series?post=2111"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}