{"id":279,"date":"2023-02-05T16:54:12","date_gmt":"2023-02-05T15:54:12","guid":{"rendered":"https:\/\/pampadata.com\/?p=279"},"modified":"2023-10-06T17:51:09","modified_gmt":"2023-10-06T15:51:09","slug":"acelera-tus-modelos-tabulares-trucos-y-tecnicas-de-optimizacion","status":"publish","type":"post","link":"https:\/\/pampadata.com\/en\/acelera-tus-modelos-tabulares-trucos-y-tecnicas-de-optimizacion\/","title":{"rendered":"Acelera tus Modelos Tabulares: Trucos y T\u00e9cnicas de Optimizaci\u00f3n"},"content":{"rendered":"<p>La optimizaci\u00f3n de modelos se ha convertido en un tema candente y esencial en la medida que la cantidad de datos disponibles sigue creciendo exponencialmente. En este articulo explicaremos algunos consejos sencillos y otros m\u00e1s avanzados para optimizar nuestros modelos tabulares. No hace falta decir que estos consejos tambi\u00e9n aplican a modelos de Power BI.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">OPTIMIZACIONES B\u00c1SICAS<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">ELIMINAR COLUMNAS INNECESARIAS<\/h2>\n\n\n\n<p>Tal vez sea un poco evidente mencionarlo, pero cada una de las columnas que llevemos al modelo implica mayor consumo de memoria, por lo tanto es importante eliminar aquellas columnas que sepamos que no aportan mucho o nada al analisis. Ejemplo de esto son las columnas de Auditoria de las tablas.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">COLUMNS CALCULADAS VS M\u00c9DIDAS<\/h2>\n\n\n\n<p>Las columnas calculadas en los Modelos Tabulares se crean en tiempo de procesamiento y se a\u00f1aden a las columnas ya existentes por lo tanto ocupan espacio en memoria. B\u00e1sicamente lo que se hace es \u201cMaterializar\u201d el dato en nuestro modelo. Es posible reemplazar muchos de estas columnas calculadas por M\u00e9didas calculadas para reducir el espacio.<\/p>\n\n\n\n<p>Veamos esto con un ejemplo, es normal que necesitemos crear un c\u00e1lculo entre dos columnas del modelo, por ejemplo \u201cMonto Facturado * Cantidad\u201d, con lo cual es posible que utilizemos la alternativa simple de crear una columna calculada (Total) con dicha multiplicaci\u00f3n y luego crear una m\u00e9trica con el \u201cSUM(Total)\u201d de dicha columna.<\/p>\n\n\n\n<p>Esto funciona de manera m\u00e1s eficiente si creamos directamente la medida, siguiendo nustro ejemplo ser\u00eda:&nbsp; S<em>UMX(Ventas, Ventas[Cantidad] * Ventas[Monto Facturado])<\/em><\/p>\n\n\n\n<p>Ambas m\u00e9didas devuelven el mismo resultado, pero el consumo de memoria de la segunda es significativamente menor.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">REVISAR LA CARDINALIDAD<\/h2>\n\n\n\n<p>Tenemos que prestar mucha atenci\u00f3n a la cardinalidad de nuestras columnas, puesto que en los campos de muchos valores distintos el motor no puede practicamente aplicar compresi\u00f3n y por lo tanto el tama\u00f1o consumido es mayor.<\/p>\n\n\n\n<p>Un ejemplo tipico para optizar esto es cuando tenemos campos de \u201cFecha y Hora\u201d, la cantidad de combinaciones posibles es muy grande, por lo tanto es m\u00e1s eficiente si separamos dicho campo en 2. (Uno para fecha y otro para Hora)<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">REDUCIR LA PRESICI\u00d3N<\/h2>\n\n\n\n<p>Esto va relacionado al punto anterior. El objetivo de reducir la presici\u00f3n de un campo es que haya una menor cantidad de valores distintos y por lo tanto aumentar la posible compresi\u00f3n.<\/p>\n\n\n\n<p>Ejemplo, si tenemos un campo con 18 decimales, es posible que para nuestro negocio alcance con tener una presici\u00f3n de 3 decimales y la diferencia de consumo de memoria ser\u00eda significativa.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">OPTIMIZACIONES DE C\u00d3DIGO (DAX)<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">EVITAR LAS FUNCIONES DE CONTROL DE ERRORES<\/h2>\n\n\n\n<p>En la medida de que sea posible evitar este tipo de funciones (SERROR e IFERROR) porqu\u00e9 el motor tiene que ir fila por fila analizando si se debe aplicar o no, lo cual evidentemente tiene un costo. Tener en cuenta que muchas funciones tienen la posibilidad de incluir entre los parametros estos controles lo cual ser\u00eda m\u00e1s eficiente.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">OPTIMIZACIONES AVANZADAS<\/h1>\n\n\n\n<h2 class=\"wp-block-heading\">ISAVAILABLEINMDX<\/h2>\n\n\n\n<p>Si no se utilizan herramientas clientes que exploten el modelo utilizando queries MDX como podria ser Excel deber\u00edamos deshabilitar esta propiedad y no tendria ning\u00fan impacto en las herramientas que se conectan utilizando queries DAX, sin embargo el ahorro de memoria es signifactivo porque no es necesario construir todas las jerarquias de atributos para MDX.<\/p>\n\n\n\n<p><strong>Importante<\/strong>: al momento de crear este articulo no es posible cambiar esta propiedad desde Visual Studio, por lo tanto hay que utilizar \u201cTabular Editor\u201d<\/p>\n\n\n\n<p>Para ampliar este punto, recomendamos la lectura del articulo de Chris Webb <a href=\"https:\/\/blog.crossjoin.co.uk\/2018\/07\/02\/isavailableinmdx-ssas-tabular\/\" title=\"\">aqui<\/a><br><br><\/p>\n\n\n\n<p>Esperamos que estas optimizaciones sean de \u00fatilidad para mejorar sus modelos!<\/p>","protected":false},"excerpt":{"rendered":"<p>La optimizaci\u00f3n de modelos se ha convertido en un tema candente y esencial en la medida que la cantidad de datos disponibles sigue creciendo exponencialmente. En este articulo explicaremos algunos consejos sencillos y otros m\u00e1s avanzados para optimizar nuestros modelos tabulares. No hace falta decir que estos consejos tambi\u00e9n aplican [&hellip;]<\/p>","protected":false},"author":1,"featured_media":280,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"_ti_tpc_template_sync":false,"_ti_tpc_template_id":"","footnotes":""},"categories":[7,9,14],"tags":[],"class_list":["post-279","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft","category-powerbi","category-ssas"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/posts\/279"}],"collection":[{"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/comments?post=279"}],"version-history":[{"count":1,"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/posts\/279\/revisions"}],"predecessor-version":[{"id":281,"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/posts\/279\/revisions\/281"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/media\/280"}],"wp:attachment":[{"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/media?parent=279"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/categories?post=279"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pampadata.com\/en\/wp-json\/wp\/v2\/tags?post=279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}