{"id":39244,"date":"2023-12-26T11:00:25","date_gmt":"2023-12-26T10:00:25","guid":{"rendered":"https:\/\/www.hiberus.com\/crecemos-contigo\/?p=39244"},"modified":"2024-01-10T08:29:32","modified_gmt":"2024-01-10T07:29:32","slug":"agilizando-proyectos-de-bi-diccionario-de-datos-y-sql-automatico","status":"publish","type":"post","link":"https:\/\/www.hiberus.com\/crecemos-contigo\/agilizando-proyectos-de-bi-diccionario-de-datos-y-sql-automatico\/","title":{"rendered":"Agilizando proyectos de BI: diccionario de datos y SQL autom\u00e1tico"},"content":{"rendered":"<p>En los <strong><a href=\"https:\/\/www.hiberus.com\/soluciones\">proyectos de BI<\/a><\/strong>, donde la velocidad y precisi\u00f3n son esenciales, resulta crucial contar con una estructura de datos robusta y bien documentada. En este contexto, el uso de un buen <strong>diccionario de datos<\/strong> se convierte en un recurso de valor incalculable. Este diccionario debe proporcionar una <strong>visi\u00f3n panor\u00e1mica de todas las tablas de la base de datos del proyecto<\/strong>, as\u00ed como <strong>detallar la estructura de cada una<\/strong> (columnas, tipos de datos, campos no nulos, restricciones, etc.), proporcionando as\u00ed un marco s\u00f3lido para el desarrollo del proyecto.<\/p>\n<p>En este art\u00edculo mostraremos la plantilla que desarrollamos desde el equipo de Oracle y c\u00f3mo agilizamos el proceso de creaci\u00f3n de tablas en base de datos gracias a un script de Python.<\/p>\n<h2>La plantilla del diccionario de datos para proyectos de BI<\/h2>\n<p>La estructura de la plantilla que desarrollamos consta, en su estado actual, de los elementos b\u00e1sicos para describir las tablas del modelo y sus caracter\u00edsticas. Consta de varias hojas de prop\u00f3sito general y de una hoja para cada tabla. Describimos a continuaci\u00f3n cada una de ellas.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39248 size-medium\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/COD-proyecto-300x42.png\" alt=\"\" width=\"300\" height=\"42\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/COD-proyecto-300x42.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/COD-proyecto-360x50.png 360w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/COD-proyecto.png 472w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h3>Hoja \u201cControl de Cambios\u201d<\/h3>\n<p>Esta hoja inicial permite llevar el seguimiento de los autores del documento y controlar sus versiones. El script de Python no utiliza esta hoja, por lo que puede modificarse su estructura a placer sin afectar su funcionamiento.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39249 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/control-de-cambios.png\" alt=\"\" width=\"608\" height=\"354\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/control-de-cambios.png 608w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/control-de-cambios-300x175.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/control-de-cambios-360x210.png 360w\" sizes=\"auto, (max-width: 608px) 100vw, 608px\" \/><\/p>\n<p style=\"text-align: center;\">Hoja \u00abControl de Cambios\u00bb<\/p>\n<h3>Hoja \u201cResumen Tablas\u201d<\/h3>\n<p>Esta hoja es la <strong>pieza central del diccionario de datos<\/strong>. Posee una fila por cada tabla, donde incluye su nombre, esquema, enlace a la hoja individual de la tabla, etc. El script solo tendr\u00e1 en cuenta las dos primeras columnas de esta hoja, por lo que la estructura del resto puede modificarse sin afectar su funcionamiento. Es importante fijarse en que se mantiene una columna vac\u00eda a la izquierda del nombre de tabla. En esta marcaremos con una \u201cx\u201d las tablas que queramos que el script tenga en cuenta a la hora de generar el c\u00f3digo SQL.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39250 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/resumen-tablas.png\" alt=\"\" width=\"745\" height=\"316\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/resumen-tablas.png 745w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/resumen-tablas-300x127.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/resumen-tablas-360x153.png 360w\" sizes=\"auto, (max-width: 745px) 100vw, 745px\" \/><\/p>\n<p style=\"text-align: center;\">Hoja \u00abResumen Tablas\u00bb<\/p>\n<h3>Una hoja por cada tabla<\/h3>\n<p>Para cada tabla descrita en la pesta\u00f1a \u201cResumen tablas\u201d, crearemos una hoja nueva que se deber\u00e1 llamar exactamente igual que la tabla. Esta hoja incluye, entre otras cosas, una tabla donde indicamos su estructura (nombres de columna, tipos de datos, nulos, campos de la clave primaria y comentarios). Se incluye tambi\u00e9n un enlace para volver al resumen. A partir de esta hoja, el script de Python generar\u00e1 autom\u00e1ticamente el c\u00f3digo SQL para crear la tabla.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39251 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/tabla-de-equipo.png\" alt=\"\" width=\"768\" height=\"261\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/tabla-de-equipo.png 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/tabla-de-equipo-300x102.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/tabla-de-equipo-360x122.png 360w\" sizes=\"auto, (max-width: 768px) 100vw, 768px\" \/><\/p>\n<p style=\"text-align: center;\">Hoja para la tabla de ejemplo \u00abDIM_EJEMPLO_1\u00bb<\/p>\n<h2>Creaci\u00f3n autom\u00e1tica de c\u00f3digo SQL de creaci\u00f3n de tablas<\/h2>\n<p>Una vez completado el diccionario, surge la necesidad de traducir esta informaci\u00f3n en la creaci\u00f3n real de tablas en la base de datos. Hacerlo a mano puede ser costoso si la cantidad de tablas es grande, adem\u00e1s de que estar\u00edamos repitiendo trabajo (pues ya hemos escrito toda la estructura de las tablas en el diccionario) y nos expondr\u00edamos a m\u00e1s errores manuales. Gracias al uso de una plantilla bien estructurada como la que hemos definido, podemos utilizar en su lugar un <strong>script que lea el Excel y genere de forma autom\u00e1tica el c\u00f3digo de SQL de creaci\u00f3n de las tablas<\/strong>.<\/p>\n<p>En nuestro caso, utilizamos Python para esta tarea. Desarrollamos un script <em>auto_tablas_sql.py<\/em> al que llamamos pas\u00e1ndole el nombre de nuestro Excel del diccionario de datos como par\u00e1metro. Para ello utilizamos el m\u00f3dulo de Python <em>xlwings<\/em>, que nos proporciona m\u00e9todos para recorrer de forma sencilla las celdas de un libro de Excel. Su documentaci\u00f3n oficial puede encontrarse <a href=\"https:\/\/docs.xlwings.org\/en\/latest\/index.html\">aqu\u00ed<\/a>.<\/p>\n<p>El script generar\u00e1 en el directorio de trabajo los siguientes elementos:<\/p>\n<ul>\n<li>Un<strong> archivo <em>sql<\/em> <\/strong>que contiene todos los script de creaci\u00f3n de tablas, uno detr\u00e1s de otro. Este es ideal para copiar, pegar y ejecutar en la hoja de trabajo de SQL.<\/li>\n<li>Un <strong>\u00e1rbol de directorios<\/strong> que organiza cada script de creaci\u00f3n de tabla en un archivo individual, cuyo nombre es el mismo de la tabla. La estructura del \u00e1rbol de directorios consta de una ra\u00edz llamada TABLAS que contiene una carpeta por cada esquema. Cada esquema contiene una carpeta para cada \u201cprefijo\u201d de tabla (en nuestro caso lo que hay antes del primer guion bajo, por ejemplo DIM o FACT). Cada una de estas carpetas contiene los archivos individuales correspondientes.<\/li>\n<\/ul>\n<p>Como ya mencionamos anteriormente, el desarrollador debe escoger <strong>qu\u00e9 tablas del Excel tendr\u00e1 en cuenta el script<\/strong>, utilizando la primera columna del resumen como casillas de marcado. Aquellas que tengan texto (por ejemplo, una \u201cx\u201d) indicar\u00e1n al script que debe procesarse la tabla indicada en esa fila. La re-ejecuci\u00f3n del c\u00f3digo sobrescribir\u00e1 los contenidos ya existentes.<\/p>\n<p>Para mayor flexibilidad (y por si en el futuro pudiesen ocurrir cambios en la estructura de la plantilla), no conviene tener <em>hardcodeadas<\/em> las coordenadas de cada elemento en el c\u00f3digo. Por ello se cre\u00f3 un archivo config.py para recogerlas como variables, pudiendo modificarlas en cualquier momento sin editar el script principal. Este archivo de configuraci\u00f3n tambi\u00e9n nos permite activar o desactivar la creaci\u00f3n del output.sql y\/o del \u00e1rbol de directorios, en caso de que solo nos interese uno de ellos.<\/p>\n<p>Para ejecutar el c\u00f3digo c\u00f3modamente desde cualquier directorio del sistema, hemos creado un ejecutable <em>auto_tablas_sql.bat<\/em> que ejecuta el script de Python, utilizando como directorio de trabajo aquel desde donde se ejecute. Por \u00faltimo, hemos a\u00f1adido su ruta a la variable de entorno PATH.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39247 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/archivos-finales.png\" alt=\"\" width=\"229\" height=\"144\" \/><\/p>\n<p style=\"text-align: center;\">Archivos finales del programa<\/p>\n<h2>Ejemplo de uso<\/h2>\n<p>A continuaci\u00f3n probaremos la ejecuci\u00f3n del script. Utilizaremos como ejemplo dos tablas DIM_EJEMPLO_1 y FACT_EJEMPLO_1.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39252 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/ejemplo1.png\" alt=\"\" width=\"378\" height=\"124\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/ejemplo1.png 378w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/ejemplo1-300x98.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/ejemplo1-360x118.png 360w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39253 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/ejemplo2.png\" alt=\"\" width=\"418\" height=\"119\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/ejemplo2.png 418w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/ejemplo2-300x85.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/ejemplo2-360x102.png 360w\" sizes=\"auto, (max-width: 418px) 100vw, 418px\" \/><\/p>\n<p>Indicamos en nuestra hoja \u201cResumen Tablas\u201d que se deben procesar las tablas DIM_EJEMPLO_1 y FACT_EJEMPLO_1:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39254 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/hoja-resumen-con-tablas.png\" alt=\"\" width=\"378\" height=\"214\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/hoja-resumen-con-tablas.png 378w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/hoja-resumen-con-tablas-300x170.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/hoja-resumen-con-tablas-360x204.png 360w\" sizes=\"auto, (max-width: 378px) 100vw, 378px\" \/><\/p>\n<p style=\"text-align: center;\">Hoja de resumen con las tablas DIM_EJEMPLO_1 y FACT_EJEMPLO_1<\/p>\n<p>Llamamos al script desde la ruta donde queremos que se creen el archivo output.sql y el \u00e1rbol de carpetas. Le a\u00f1adimos como argumento la ruta del diccionario de datos y ejecutamos.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39255 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/codigo.png\" alt=\"\" width=\"736\" height=\"322\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/codigo.png 736w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/codigo-300x131.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/codigo-360x158.png 360w\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" \/><\/p>\n<p>La consola nos confirma que las tablas DIM_EJEMPLO_1 y FACT_EJEMPLO_1 se han procesado (son las que hab\u00edamos marcado con una \u201cx\u201d en la hoja de resumen). Finalmente, comprobamos el resultado.<\/p>\n<p><strong>Contenido de output.sql<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39256 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/output.sql_.png\" alt=\"\" width=\"655\" height=\"592\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/output.sql_.png 655w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/output.sql_-300x271.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/output.sql_-360x325.png 360w\" sizes=\"auto, (max-width: 655px) 100vw, 655px\" \/><\/p>\n<p>Fichero output.sql generado por el script<\/p>\n<p><strong>\u00c1rbol de directorios creado:<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-39257 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/arbol-de-directorios.png\" alt=\"\" width=\"393\" height=\"162\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/arbol-de-directorios.png 393w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/arbol-de-directorios-300x124.png 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/12\/arbol-de-directorios-360x148.png 360w\" sizes=\"auto, (max-width: 393px) 100vw, 393px\" \/><\/p>\n<p>Hecho esto, el desarrollador puede simplemente copiar, pegar y ejecutar el c\u00f3digo de output.sql en la hoja de trabajo de SQL para crear todas las tablas que haya marcado en el diccionario de datos, incluyendo ya adem\u00e1s los comentarios de columna y la clave primaria.<\/p>\n<p>Hecho esto, el desarrollador puede simplemente copiar, pegar y ejecutar el c\u00f3digo de output.sql en la hoja de trabajo de SQL para crear todas las tablas que haya marcado en el diccionario de datos, incluyendo ya adem\u00e1s los comentarios de columna y la clave primaria.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>La combinaci\u00f3n de un diccionario de datos bien dise\u00f1ado y la automatizaci\u00f3n de generaci\u00f3n de c\u00f3digo de creaci\u00f3n de tablas a trav\u00e9s de scripts no solo <strong>mejora la eficiencia del desarrollo<\/strong>, sino que tambi\u00e9n<strong> reduce la posibilidad de errores manuales<\/strong>. Este enfoque proporciona a los desarrolladores una herramienta valiosa para<strong> gestionar y mantener la integridad de la estructura de la base de datos en proyectos de BI<\/strong>, contribuyendo as\u00ed al \u00e9xito y la calidad del producto final.<\/p>\n<p>Nuestro equipo de <a href=\"https:\/\/www.hiberus.com\/data-ia\/data-insights\">Data &amp; Analytics<\/a> cuenta con un <a href=\"https:\/\/www.hiberus.com\/soluciones\">equipo especializado en Business Intelligence<\/a>. Gracias a las herramientas de BI, ayudamos a nuestros clientes a integrar diferentes fuentes de datos, facilitar la realizaci\u00f3n de informes y elaborar los an\u00e1lisis adecuados para mejorar la toma de decisiones.<\/p>\n<p><a href=\"https:\/\/www.hiberus.com\/data-ia\/behind-the-ai\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-32439 size-full\" src=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal.jpg\" alt=\"behind the AI\" width=\"1920\" height=\"654\" srcset=\"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal.jpg 1920w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-300x102.jpg 300w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-1024x349.jpg 1024w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-768x262.jpg 768w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-1536x523.jpg 1536w, https:\/\/www.hiberus.com\/crecemos-contigo\/wp-content\/uploads\/2023\/06\/banner-horizontal-360x123.jpg 360w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/a><\/p>\n        <div class=\"row\">\n            <div class=\"block-cta-form\" style=\"background-color: #003664;\">\n                <div class=\"content-cta-form\">\n                    <div class=\"text-cta-form\">\n                        <p class=\"title-cta-form\">\u00bfQuieres m\u00e1s informaci\u00f3n sobre nuestros servicios de Business Intelligence?<\/p>\n                        <p>Contacta con nuestro equipo de expertos en BI<\/p>\n                    <\/div>\n                    <div class=\"form-fields\">\n                        \n<div class=\"wpcf7 no-js\" id=\"wpcf7-f33973-o1\" lang=\"es-ES\" dir=\"ltr\" data-wpcf7-id=\"33973\">\n<div class=\"screen-reader-response\"><p role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"><\/p> <ul><\/ul><\/div>\n<form action=\"\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/39244#wpcf7-f33973-o1\" method=\"post\" class=\"wpcf7-form init\" aria-label=\"Formulario de contacto\" novalidate=\"novalidate\" data-status=\"init\">\n<fieldset class=\"hidden-fields-container\"><input type=\"hidden\" name=\"_wpcf7\" value=\"33973\" \/><input type=\"hidden\" name=\"_wpcf7_version\" value=\"6.1.5\" \/><input type=\"hidden\" name=\"_wpcf7_locale\" value=\"es_ES\" \/><input type=\"hidden\" name=\"_wpcf7_unit_tag\" value=\"wpcf7-f33973-o1\" \/><input type=\"hidden\" name=\"_wpcf7_container_post\" value=\"0\" \/><input type=\"hidden\" name=\"_wpcf7_posted_data_hash\" value=\"\" \/><input type=\"hidden\" name=\"_wpcf7_recaptcha_response\" value=\"\" \/>\n<\/fieldset>\n<div id=\"responsive-form\" class=\"clearfix\">\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"nombre\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Nombre *\" value=\"\" type=\"text\" name=\"nombre\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"apellido\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Apellido *\" value=\"\" type=\"text\" name=\"apellido\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"correo\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-email wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-email\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Correo corporativo *\" value=\"\" type=\"email\" name=\"correo\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"telf-contacto\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-tel wpcf7-validates-as-required wpcf7-text wpcf7-validates-as-tel\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Tel\u00e9fono *\" value=\"\" type=\"tel\" name=\"telf-contacto\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"compania\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Compa\u00f1ia *\" value=\"\" type=\"text\" name=\"compania\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"mensaje\"><textarea cols=\"40\" rows=\"10\" maxlength=\"2000\" class=\"wpcf7-form-control wpcf7-textarea wpcf7-validates-as-required\" aria-required=\"true\" aria-invalid=\"false\" placeholder=\"Mensaje *\" name=\"mensaje\"><\/textarea><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full color-acceptance\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"politica\"><span class=\"wpcf7-form-control wpcf7-acceptance\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"politica\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">He le\u00eddo y acepto la <a href=\"https:\/\/www.hiberus.com\/politica\" target=\"_blank\"><u>Pol\u00edtica de privacidad<\/u><\/a><\/span><\/label><\/span><\/span><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-full color-acceptance\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"marketing\"><span class=\"wpcf7-form-control wpcf7-acceptance optional\"><span class=\"wpcf7-list-item\"><label><input type=\"checkbox\" name=\"marketing\" value=\"1\" aria-invalid=\"false\" \/><span class=\"wpcf7-list-item-label\">Me gustar\u00eda recibir comunicaciones de marketing de Hiberus y sobre sus productos, servicios y eventos.<\/span><\/label><\/span><\/span><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div class=\"column-half\">\n\t\t\t<p><input class=\"wpcf7-form-control wpcf7-submit has-spinner\" type=\"submit\" value=\"Contacta con nosotros\" \/>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n\t<div class=\"form-row\">\n\t\t<div id=\"campos_ocultos\" class=\"hidden\">\n\t\t\t<p><span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new1\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new1\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new1\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new2\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new2\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new2\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new3\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new3\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new3\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new4\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new4\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new4\" \/><\/span><br \/>\n<span class=\"wpcf7-form-control-wrap\" data-name=\"oculto_analitica_new_p\"><input size=\"40\" maxlength=\"400\" class=\"wpcf7-form-control wpcf7-text\" id=\"oculto_analitica_new_p\" aria-invalid=\"false\" value=\"\" type=\"text\" name=\"oculto_analitica_new_p\" \/><\/span>\n\t\t\t<\/p>\n\t\t<\/div>\n\t<\/div>\n<\/div>\n\n<!--end responsive-form--><div class=\"wpcf7-response-output\" aria-hidden=\"true\"><\/div>\n<\/form>\n<\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n        \n","protected":false},"excerpt":{"rendered":"<p>En los proyectos de BI, donde la velocidad y precisi\u00f3n son esenciales, resulta crucial contar con una estructura de datos robusta y&#8230;<\/p>\n","protected":false},"author":339,"featured_media":39261,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_ayudawp_aiss_exclude":false,"footnotes":""},"categories":[236,7],"tags":[258,198],"class_list":{"0":"post-39244","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-data-ia","8":"category-next-tech","9":"tag-business-intelligence","10":"tag-data"},"acf":[],"_links":{"self":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/39244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/users\/339"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/comments?post=39244"}],"version-history":[{"count":4,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/39244\/revisions"}],"predecessor-version":[{"id":39357,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/posts\/39244\/revisions\/39357"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/media\/39261"}],"wp:attachment":[{"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/media?parent=39244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/categories?post=39244"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hiberus.com\/crecemos-contigo\/wp-json\/wp\/v2\/tags?post=39244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}