¿cómo migrar procesos de microsoft® access a sas® enterprise

Anuncio
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: osmel.b@datanalitica.com
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.
Descargar