RDSUG 01 Experiencia de Uso Paper 2014-003 ¿CÓMO MIGRAR PROCESOS DE MICROSOFT® ACCESS A SAS® ENTERPRISE GUIDE? O SMEL M. B RITO -B IGOTT D AT A NALÍTICA , SRL RESUMEN (ABSTRACT) Microsoft® Access es una poderosa y muy utilizada herramienta de base de datos de escritorio, pero generalmente tiene limitaciones cuando los conjuntos de datos son muy grandes. Cientos de programas y archivos de Access se hacen cada vez más grandes y su manejo muy complejo. Cuando se empieza a utilizar SAS® Enterprise Guide y se tiene experiencia utilizando Access, la primera pregunta que surge es ¿cómo llevo esos procesos/datos que tengo en Access a Enterprise Guide? ¿Es muy complejo el proceso? El presente trabajo pretende mostrar algunos consejos de cómo migrar estos procesos/datos. CONCEPTOS Microsoft Access es una poderosa y muy utilizada herramienta de base de datos de escritorio, pero generalmente tiene limitaciones cuando los conjuntos de datos son muy grandes. La mayoría de las empresas que empiezan a hacer análisis con sus datos lo hacen directamente con herramientas SQL (lo que implica que los analistas, en muchos casos no informáticos, les toque aprender a programar en ese lenguaje) o en otros casos utilizan Microsoft Access, que permite utilizar la potencialidad de una base de datos y del lenguaje SQL pero a través de herramientas de “Query by example”. En la medida que los análisis van avanzando en cantidad y complejidad se van generando una multitud de consultas donde se manipulan y transforman los datos. También los archivos de Access van creciendo en tamaño y requieren ser comprimidas constantemente. La primera solución que se busca es mover los grandes datos a bases de datos SQL (sea Oracle o MSSQL Server) para que sean accedidos vía ODBC (vinculando las tablas dentro del archivo de Access). Figura 1 - Procesamiento de datos utilizando Microsoft® Access RDSUG 01 Experiencia de Uso Esta solución funciona en una primera instancia, pero a medida que los datos crecen se va perdiendo rendimiento ya que, como se muestra en la figura 1, el procesamiento ocurre en el cliente, que normalmente tiene menores recursos de procesamiento. Aunque esto puede mejorarse utilizando programación passthrough, esta solución requiere de conocimientos avanzados de programación en SQL (sobre todo de la versión SQL del manejador de base de datos que se utilice). Figura 2 - Proceso de ejecución de procesos con SAS Enterprise Guide A diferencia de Access, SAS Enterprise Guide aprovecha el poder de ejecución del ambiente de metadatos/compute de SAS en servidores. Desde SAS Enterprise Guide se manda a ejecutar en los servidores SAS el código generado por las tareas en Enterprise Guide o código ad-hoc programado, y lo que regresa al cliente es el resultado de las consultas, por lo que lo que viaja por la red es menos cantidad de datos, lo que agiliza el proceso. También desde SAS Enterprise Guide se puede aprovechar la capacidad de procesamiento de los servidores RDBMS utilizando programación pass-through dentro de los procedimientos SQL. RDSUG 01 Experiencia de Uso LLEVANDO ACCESS A SAS® ENTERPRISE GUIDE DATOS Si se utiliza Access para almacenar datos, Con SAS Enterprise Guide es posible importar archivos de Microsoft Access desde sus versiones 2000 (archivos .mdb) a las versiones más recientes (2010-2013, archivos .accdb). Para importar datos utilizando SAS Enterprise Guide se debe invocar el asistente (wizard) de importación de datos. El primer paso al invocar el asistente es seleccionar el archivo de Access (con extensiones .mdb o .accdb) el cual contiene la(s) tabla(s) a ser importadas como datasets de SAS. RDSUG 01 Experiencia de Uso Una vez iniciado el asistente, lo primero que se indica es el origen de datos y la salida en SAS. Inicialmente SAS Enterprise Guide selecciona la librería WORK y le da el nombre al dataset tal como se llama el archivo de Access seleccionado. El destino, tanto la librería como el nombre del dataset se puede cambiar a como el usuario determine donde quiera se almacene la salida. Una recomendación útil es que el destino de la importación inicial sea la librería WORK y luego de transformar y verificar los datos, grabarlo en una librería definitiva. 1 1 Al ejecutar la importación, SAS Enterprise Guide puede mostrar el siguiente error: A problem was encountered while attempting to use oledb to read data from the source file. Esto es debido a que las aplicaciones de 64-bits de SAS sólo pueden importar datos de Access siempre que se encuentre instalado el Microsoft Office or 64-bit Office System (ACE) Driver (problema documentado en la nota http://support.sas.com/kb/50/661.html). La solución ofrecida por SAS es utilizar un cliente de 32 bits para poder realizar la importación. RDSUG 01 Experiencia de Uso El siguiente paso es especificar la tabla de la base de datos de Microsoft Access que se quiere importar como un dataset de SAS. Este proceso de importación debe repetirse por cada tabla que contenga datos en la base de datos de Microsoft Access. Dado que Microsoft Access es más permisivo en el uso de espacios en blanco, caracteres especiales o números en los nombres de los campos de las tablas, el asistente tiene la opción de renombrar automáticamente las columnas a ser importadas para que cumplan con las reglas de nombramiento de columnas de SAS. El siguiente paso muestra las columnas a ser importadas, sus tipos y longitudes y los formatos de entrada y salida con que serán grabados en el dataset de SAS. RDSUG 01 Experiencia de Uso Al finalizar el asistente de importación este mostrará un flujo indicando la base de datos leída de Microsoft Access, la tarea de importación y el dataset de salida. RDSUG 01 Experiencia de Uso CONSULTAS Toda consulta en Access genera un código SQL. Microsoft Access es una base de datos relacional de escritorio que incorpora el lenguaje SQL como su lenguaje natural de manipulación de datos. Como toda base de datos, utiliza su propia versión de SQL con instrucciones y funciones propias que amplían las capacidades de procesamiento. Las consultas construidas en MS Access pueden ser migradas utilizando el código generado y haciendo las adaptaciones en SAS dentro de un PROC SQL o reconstruyendo la consulta con la tarea Query Builder en Enterprise Guide. En el ejemplo aquí mostrado es de una consulta simple que contiene condiciones y ordenamiento. Este tipo de consulta es el más fácil de migrar ya que lo único que hay que estar pendiente al migrar el código es cambiar RDSUG 01 Experiencia de Uso las referencias de las tablas de Access a la correspondiente librería registrada en SAS (ya sea de tipo SAS Base o librería de SAS ACCESS de acceso a fuentes externas.2 En caso de que en las consultas de Access se utilicen funciones (mayormente de Visual Basic) propias para manipular datos, hay que buscar en el catálogo de funciones de SAS las funciones equivalentes y sustituirlas en el código. En la siguiente tabla mostramos unas cuantas equivalencias de funciones entre Access y SAS. Microsoft Access Función Descripción mid trim ltrim rtrim str val Función Equivalente substr Devuelve una cadena que a su vez contiene un número especificado de caracteres de una cadena Devuelve una cadena que contiene una copia trim de una cadena dada sin espacios iniciales (LTrim), sin espacios finales (RTrim) o sin espacios iniciales ni finales (Trim) Devuelve el carácter equivalente a una put expresión numérica especificada Devuelve los números contenidos en una input cadena como un valor numérico del tipo adecuado SAS Descripción Devuelve una cadena que a su vez contiene un número especificado de caracteres de una cadena Realiza la conversión de una expresión o un valor numérico a una expresión de tipo string con un formato3 especificado. Realiza la conversión de una expresión o un valor string a una expresión de tipo numérico con un formato4 especificado. Finalmente, las cláusulas de join explicito que utiliza Access al combinar dos o más tablas (Inner Join, Left Join o Rigth Join) son perfectamente compatibles con el SQL que admite SAS, por lo que al migrar códigos SQL de consultas que combinen tablas no deberá tener ningún inconveniente. Si usted prefiere puede reconstruir estos joins usando el Query Builder. CONCLUSIONES El proceso de migración desde Microsoft Access a SAS Enterprise Guide puede ser algo largo y complejo en las primeras fases de implementación de SAS como herramienta de análisis, dependiendo de la cantidad y complejidad de consultas que se hayan desarrollado durante el uso de Access. Pero una vez migrados, este esfuerzo se verá recompensado en una mejora sustancial en los tiempos de procesamiento de los procesos de análisis. Además, con SAS Enterprise Guide se puede aprovechar toda la capacidad analítica de SAS y sus opciones/funciones de manipulación de datos, que para poder aplicarlas, habría que hacerlas en Access o en cualquier otro lenguaje de programación. 2 Manejadores de bases de datos, archivos de datos o cualquier otra fuente que SAS pueda acceder. SAS trabaja con formatos de conversión y despliegue de valores que son útiles para la función PUT. 4 SAS trabaja con formatos de conversión y despliegue de valores que son útiles para la función INPUT. 3 RDSUG 01 Experiencia de Uso REFERENCIAS Dickstein, Craig y Ray Pass. DATA Step vs. http://www2.sas.com/proceedings/sugi29/269-29.pdf. PROC SQL: What’s a neophyte to do? Microsoft. Introducción a Access SQL. https://support.office.com/es-es/article/Introduction-to-Access-SQLd5f21d10-cd73-4507-925e-bb26e377fe7e. Ronk, Katie M, Steve First y David Beam. http://www2.sas.com/proceedings/sugi27/p191-27.pdf. An Introduction SAS Institute Inc. SAS® 9.4 SQL Procedure http://support.sas.com/documentation/cdl/en/sqlproc/65065/PDF/default/sqlproc.pdf. Zhao, Yi. Effective Use of SQL in SAS Programming. http://www.lexjansen.com/nesug/nesug08/bb/bb04.pdf. to PROC User’s SQL. Guide. North Eastern SAS User Groups 2008. INFORMACIÓN DE CONTACTO Comentarios y preguntas son apreciados. Contacte al autor Osmel Brito-Bigott Director de Consultoría DatAnalítica, SRL (http://www.datanalitica.com) Email Trabajo: [email protected] Redes Sociales Twitter: @osmelbrito LikedIn: http://do.linkedin.com/pub/osmel-brito-bigott/1/8b3/823/ SAS y cualquier otro nombre de producto o servicio de SAS Institute Inc., son marcas registradas de SAS Institute Inc. Otras marcas y productos son marcar registradas de sus respectivas compañías.