{"id":430,"date":"2020-02-20T15:49:19","date_gmt":"2020-02-20T14:49:19","guid":{"rendered":"https:\/\/trainingpowerbi.wordpress.com\/2018\/02\/14\/desnormalizando-consultas-de-forma-eficiente-2\/"},"modified":"2020-02-21T12:09:20","modified_gmt":"2020-02-21T11:09:20","slug":"desnormalizando-consultas-de-forma-eficiente-2","status":"publish","type":"post","link":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/","title":{"rendered":"Desnormalizando dimensiones de forma eficiente"},"content":{"rendered":"<p>Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la <strong>simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos<\/strong>, a la vez que en obtener un <strong>rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas.<\/strong><\/p>\n<p>Las estructuras altamente normalizadas, con dimensiones organizadas en <em>esquemas de copo de nieve<\/em> que principalmente nos encontraremos en los sistemas de procesamiento de transacciones, no ser\u00e1n adecuadas para satisfacer las necesidades anal\u00edticas de la empresa teniendo la comprensibilidad del modelo por parte de los usuarios y la velocidad de consulta como objetivos principales. El hecho de disponer de <strong>m\u00e1s de una tabla por cada dimensi\u00f3n<\/strong> de la tabla de hechos de un proceso de negocio implica tener que realizar c\u00f3digo m\u00e1s complejo para realizar una consulta que a su vez se ejecutar\u00e1 en un tiempo mayor, debido en parte al mayor n\u00famero de relaciones.<\/p>\n<p><!--more--><\/p>\n<p>Por ello, uno de los primeros pasos a seguir al dise\u00f1ar un modelo de datos anal\u00edtico corresponde a la <strong>desnormalizaci\u00f3n de los atributos<\/strong> que se encuentran alojados en los niveles superiores de las jerarqu\u00edas dimensionales, de manera que cada tabla de b\u00fasqueda refleje una dimensi\u00f3n con todos sus atributos correspondientes.<\/p>\n<p>La manera simple de abordar este proceso consiste en utilizar la interfaz gr\u00e1fica del <strong>editor de consultas<\/strong> de <em>Power BI<\/em>. Utilizando la base de datos de ejemplo <em>Adventure Works, <\/em>lo que queremos es desnormalizar los atributos de las tablas de &#8216;Categor\u00eda de producto&#8217; y &#8216;Subcategor\u00eda de producto&#8217;, de forma que una sola tabla contenga todos los atributos correspondientes a la dimensi\u00f3n &#8216;Producto&#8217;, claramente una de las dimensiones m\u00e1s importantes y donde un buen conjunto de atributos descriptivos se traducir\u00e1 en una gran capacidad anal\u00edtica al alcance de los usuarios de negocio:<br \/>\n<a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-31-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-731 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-31-1.png?resize=629%2C292&#038;ssl=1\" alt=\"\" width=\"629\" height=\"292\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-31-1.png?w=1005&amp;ssl=1 1005w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-31-1.png?resize=300%2C139&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-31-1.png?resize=768%2C356&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-31-1.png?resize=900%2C417&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>Para ello, desde el editor de consultas combinamos las tablas &#8216;Producto&#8217; y &#8216;Subcategor\u00eda&#8217;:<\/p>\n<p><a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-4-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-733 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-4-1.png?resize=629%2C574&#038;ssl=1\" alt=\"\" width=\"629\" height=\"574\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-4-1.png?w=802&amp;ssl=1 802w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-4-1.png?resize=300%2C274&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-4-1.png?resize=768%2C701&amp;ssl=1 768w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>Como mediante este proceso solo podemos combinar 2 consultas a la vez, tenemos que realizar la operaci\u00f3n una vez m\u00e1s para combinar tambi\u00e9n la tabla &#8216;Categor\u00eda&#8217;:<br \/>\n<a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-5-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-734 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-5-1.png?resize=629%2C577&#038;ssl=1\" alt=\"\" width=\"629\" height=\"577\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-5-1.png?w=768&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-5-1.png?resize=300%2C275&amp;ssl=1 300w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>Posteriormente, tenemos que borrar los atributos que no nos interese mantener, como las claves primarias que relacionan las consultas combinadas. Una vez realizado este proceso tendremos el resultado deseado, es decir, una \u00fanica consulta con todos los atributos correspondientes a la dimensi\u00f3n &#8216;Producto&#8217;:<br \/>\n<a href=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-6-1.png?ssl=1\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-735 size-full\" src=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-6-1.png?resize=629%2C250&#038;ssl=1\" alt=\"\" width=\"629\" height=\"250\" srcset=\"https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-6-1.png?w=1058&amp;ssl=1 1058w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-6-1.png?resize=300%2C119&amp;ssl=1 300w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-6-1.png?resize=768%2C306&amp;ssl=1 768w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-6-1.png?resize=1024%2C407&amp;ssl=1 1024w, https:\/\/i0.wp.com\/bicontrolling.com\/wp-content\/uploads\/2018\/09\/image-6-1.png?resize=900%2C358&amp;ssl=1 900w\" sizes=\"auto, (max-width: 629px) 100vw, 629px\" \/><\/a><\/p>\n<p>Aunque este proceso es muy sencillo y aparentemente directo, es <strong>relativamente ineficiente<\/strong>, ya que todas las consultas involucradas deben actualizarse cada vez que las ponemos al d\u00eda, independientemente de que no tengan ning\u00fan valor anal\u00edtico como consultas independientes y no las carguemos al modelo de datos.<\/p>\n<p>Una mejor forma de desnormalizar las dimensiones consiste en, mediante <strong>un solo conjunto de ordenes en M<\/strong>, seleccionar \u00fanicamente los campos que nos interesen de cada tabla (en vez de importar todos y posteriormente eliminar los que no queremos) y combinarlos de forma que tengamos en una sola consulta todos los atributos de la dimensi\u00f3n &#8216;Producto&#8217;. El siguiente c\u00f3digo realiza los mismos pasos que hemos elaborado de forma manual a trav\u00e9s del interfaz gr\u00e1fico de <em>Power Query, <\/em>pero de una manera m\u00e1s r\u00e1pida y eficiente:<\/p>\n<pre>let\nSource = Sql.Database(\"explocal9988\", \"AdventureWorksDW\"),\nDimProducto = Source{[Name=\"DimProducto\"]}[Data],\nDimProducto.Final = Table.SelectColumns (DimProducto,\n{\"CProducto\",\n\"NProducto\",\n\"Fabricante\",\n\"Marca\",\n\"Color\",\n\"CostoUnitario\",\n\"PrecioUnitario\" } ),\n\nDimSubcategoria = Source{[Name=\"DimSubcategoria\"]}[Data],\nDimSubcategoria.Final = Table.SelectColumns ( DimSubcategoria,\n{\"NSubcategoria\",\n\"CSubcategoria\",\n\"CCategoria\"}),\n\nDimCategoria = Source{[Name=\"DimCategoria\"]}[Data],\nDimCategoria.Final = Table.SelectColumns ( DimCategoria,\n{\"NCategoria\",\n\"CCategoria\"}),\n\n\nProductoYSubcategoria = Table.Join(DimProducto.Final, \"CSubcategoria\", DimSubcategoria.Final, \"CSubcategoria\" ),\n\n\nProducto = Table.Join( ProductoYSubcategoria, \"CCategoria\", DimCategoria.Final, \"CCategoria\" ),\n\n\nProducto.Final = Table.SelectColumns (Producto, {\n\"CProducto\",\n\"NProducto\",\n\"NCategoria\",\n\"NSubcategoria\",\n\"Color\",\n\"Marca\" } )\n\nin\nProducto.Final<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos, a la vez que en obtener un rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas [&hellip;]<\/p>\n","protected":false},"author":2,"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,6],"tags":[27,10,29,12,14,18,30],"post_series":[],"class_list":["post-430","post","type-post","status-publish","format-standard","hentry","category-arquitectura-de-datos","category-m-power-query","tag-bi","tag-editor-de-consultas","tag-etl","tag-m","tag-power-bi","tag-power-query","tag-sql"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos, a la vez que en obtener un rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas\" \/>\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\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/\" \/>\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=\"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling\" \/>\n\t\t<meta property=\"og:description\" content=\"Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos, a la vez que en obtener un rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-20T14:49:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-21T11:09:20+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos, a la vez que en obtener un rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas\" \/>\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\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#article\",\"name\":\"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling\",\"headline\":\"Desnormalizando dimensiones de forma eficiente\",\"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\\\/2018\\\/09\\\/image-31-1.png?fit=1005%2C466&ssl=1\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#articleImage\",\"width\":1005,\"height\":466},\"datePublished\":\"2020-02-20T15:49:19+01:00\",\"dateModified\":\"2020-02-21T12:09:20+01:00\",\"inLanguage\":\"es-ES\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#webpage\"},\"articleSection\":\"Arquitectura de datos, M (Power Query), BI, Editor de consultas, ETL, M, Power BI, Power Query, SQL\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#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\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#listItem\",\"name\":\"Desnormalizando dimensiones de forma eficiente\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com#listItem\",\"name\":\"Inicio\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#listItem\",\"position\":3,\"name\":\"Desnormalizando dimensiones de forma eficiente\",\"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\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#webpage\",\"url\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/\",\"name\":\"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling\",\"description\":\"Como vimos en una entrada anterior, cuando dise\\u00f1amos un modelo de datos anal\\u00edtico, el enfoque principal debe situarse en lograr un dise\\u00f1o que favorezca la simplicidad en la exploraci\\u00f3n y agregaci\\u00f3n de los datos, a la vez que en obtener un rendimiento \\u00f3ptimo en la realizaci\\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas\",\"inLanguage\":\"es-ES\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/2020\\\/02\\\/20\\\/desnormalizando-consultas-de-forma-eficiente-2\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/bicontrolling.com\\\/index.php\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2020-02-20T15:49:19+01:00\",\"dateModified\":\"2020-02-21T12:09: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":"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling","description":"Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos, a la vez que en obtener un rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas","canonical_url":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#article","name":"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling","headline":"Desnormalizando dimensiones de forma eficiente","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\/2018\/09\/image-31-1.png?fit=1005%2C466&ssl=1","@id":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#articleImage","width":1005,"height":466},"datePublished":"2020-02-20T15:49:19+01:00","dateModified":"2020-02-21T12:09:20+01:00","inLanguage":"es-ES","mainEntityOfPage":{"@id":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#webpage"},"isPartOf":{"@id":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#webpage"},"articleSection":"Arquitectura de datos, M (Power Query), BI, Editor de consultas, ETL, M, Power BI, Power Query, SQL"},{"@type":"BreadcrumbList","@id":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#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\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#listItem","name":"Desnormalizando dimensiones de forma eficiente"},"previousItem":{"@type":"ListItem","@id":"https:\/\/bicontrolling.com#listItem","name":"Inicio"}},{"@type":"ListItem","@id":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#listItem","position":3,"name":"Desnormalizando dimensiones de forma eficiente","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\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#webpage","url":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/","name":"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling","description":"Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos, a la vez que en obtener un rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas","inLanguage":"es-ES","isPartOf":{"@id":"https:\/\/bicontrolling.com\/#website"},"breadcrumb":{"@id":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/#breadcrumblist"},"author":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"creator":{"@id":"https:\/\/bicontrolling.com\/index.php\/author\/admin\/#author"},"datePublished":"2020-02-20T15:49:19+01:00","dateModified":"2020-02-21T12:09: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":"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling","og:description":"Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos, a la vez que en obtener un rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas","og:url":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/","article:published_time":"2020-02-20T14:49:19+00:00","article:modified_time":"2020-02-21T11:09:20+00:00","twitter:card":"summary","twitter:title":"Desnormalizando dimensiones de forma eficiente | Business Intelligence Controlling","twitter:description":"Como vimos en una entrada anterior, cuando dise\u00f1amos un modelo de datos anal\u00edtico, el enfoque principal debe situarse en lograr un dise\u00f1o que favorezca la simplicidad en la exploraci\u00f3n y agregaci\u00f3n de los datos, a la vez que en obtener un rendimiento \u00f3ptimo en la realizaci\u00f3n de consultas. Las estructuras altamente normalizadas, con dimensiones organizadas"},"aioseo_meta_data":{"post_id":"430","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:40:50","updated":"2025-06-04 12:10:00","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\tDesnormalizando dimensiones de forma eficiente\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":"Desnormalizando dimensiones de forma eficiente","link":"https:\/\/bicontrolling.com\/index.php\/2020\/02\/20\/desnormalizando-consultas-de-forma-eficiente-2\/"}],"jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":2059,"url":"https:\/\/bicontrolling.com\/index.php\/2023\/08\/31\/integridad-referencial-y-miembros-de\/","url_meta":{"origin":430,"position":0},"title":"Integridad referencial y miembros desconocidos en Power BI","author":"Admin","date":"31 agosto, 2023","format":false,"excerpt":"Introducci\u00f3n En este art\u00edculo vamos a explorar como se comporta Power BI cuando en un modelo de datos existen violaciones de la integridad referencial, y como podemos identificar y solventar este problema, a la vez que agrupamos los miembros desconocidos dot\u00e1ndolos de significado y garantizando la integridad de nuestro modelo.\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\/2023\/08\/image-1.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1938,"url":"https:\/\/bicontrolling.com\/index.php\/2021\/11\/26\/hasta-el-ultimo-segundo-en-power-bi\/","url_meta":{"origin":430,"position":1},"title":"Hasta el \u00faltimo segundo en Power BI","author":"Admin","date":"26 noviembre, 2021","format":false,"excerpt":"Video de mi participaci\u00f3n en Power Platform Madrid, con una sesi\u00f3n sobre la creaci\u00f3n y el uso de una dimensi\u00f3n horaria que nos permita analizar nuestros hechos a granularidades inferiores al d\u00eda. https:\/\/www.youtube.com\/watch?v=UViZ3lzLxrE","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\/UViZ3lzLxrE\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":464,"url":"https:\/\/bicontrolling.com\/index.php\/2017\/12\/10\/tablas-de-medidas-en-power-bi-desktop\/","url_meta":{"origin":430,"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":267,"url":"https:\/\/bicontrolling.com\/index.php\/2018\/01\/28\/dias-festivos-nacionales-en-dimension-temporal\/","url_meta":{"origin":430,"position":3},"title":"D\u00edas festivos nacionales en dimensi\u00f3n temporal","author":"Admin","date":"28 enero, 2018","format":false,"excerpt":"Aquellos profesionales que trabajan en temas relacionados con la gesti\u00f3n anal\u00edtica de los datos de una empresa, conocen que existen multitud de an\u00e1lisis interesantes que dependen \u00edntegramente de la dimensi\u00f3n temporal del modelo de datos. Sin una dimensi\u00f3n temporal cuyos metadatos se adapten a las caracter\u00edsticas de la empresa en\u2026","rel":"","context":"En \u00abM (Power Query)\u00bb","block_context":{"text":"M (Power Query)","link":"https:\/\/bicontrolling.com\/index.php\/category\/m-power-query\/"},"img":{"alt_text":"Imagen 1","src":"https:\/\/trainingpowerbi.files.wordpress.com\/2017\/12\/imagen-1.png?w=350&h=200&crop=1","width":350,"height":200},"classes":[]},{"id":1769,"url":"https:\/\/bicontrolling.com\/index.php\/2020\/12\/09\/crear-dimension-horaria-en-dax\/","url_meta":{"origin":430,"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":1568,"url":"https:\/\/bicontrolling.com\/index.php\/2020\/04\/19\/mostrar-la-ultima-fecha-de-actualizacion-en-power-bi\/","url_meta":{"origin":430,"position":5},"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":[]}],"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/430","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=430"}],"version-history":[{"count":3,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/430\/revisions"}],"predecessor-version":[{"id":1560,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/posts\/430\/revisions\/1560"}],"wp:attachment":[{"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/media?parent=430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/categories?post=430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/tags?post=430"},{"taxonomy":"post_series","embeddable":true,"href":"https:\/\/bicontrolling.com\/index.php\/wp-json\/wp\/v2\/post_series?post=430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}