Aunque
los sistemas han evolucionado mucho en términos de tecnología, de comunicaciones
y de seguridad, el acceso a datos a los sistemas de origen a menudo se logra a
través de archivos planos. A los responsables de los "Sistemas Operativos"
(SO) no les gustan las aplicaciones que ellos no entienden del todo, y que
extraen volúmenes desconocidos de datos en horas desconocidas, de sus sistemas.
Incluso cuando alguien trata de cambiar esto, siempre recibe la misma reacción:
"¡No voy a permitir que altere mi sistema con algo que yo no conozco!".
Ellos prefieren mantener el control y hacer de los orígenes de datos
disponibles en archivos planos en algunas "áreas de staging", a pesar
de abrir directamente 'puertas' en el SO. Por lo tanto, la lectura de archivos
de texto y el tratamiento posterior, es una práctica ampliamente utilizada
principalmente en un escenario Data Warehousing conocido como el modelo PUSH. En este enfoque, el SO
inicia la extracción de datos a un repositorio externo (generalmente conocido
como un área de staging) que es accedido por un proceso de ETL.
·
Copy directory - Copia una carpeta
de una ubicación a otra.
·
Copy file - Copia un archivo de
una ubicación a otra.
·
Create directory - Crea una
carpeta en una ubicación especificada.
·
Delete directory - Elimina una
carpeta en una ubicación especificada.
·
Delete directory content - Elimina
todos los archivos y carpetas en una carpeta.
·
Delete file - Elimina un archivo
en una ubicación especificada.
·
Move directory - Mueve una carpeta
de una ubicación a otra.
·
Move file - Mueve un archivo de
una ubicación a otra.
·
Rename file - Renombra un archivo
en una ubicación especificada
Alistarse
Para
utilizar este ejercicio, el archivo plano ArchivoTextoPlano.txt y la carpeta Archivos Procesados deberían existir en la siguiente ubicación del sistema de archivos:
Ejercicio
Considere el escenario donde
SSIS necesita periódicamente mirar en una parte específica (sistema de
archivos) para un archivo plano producido por el Sistema Operacional (SO) que
contiene los datos que deben ser integrados en un repositorio central. Por lo tanto,
es necesario leer los datos del archivo plano bajo una carpeta compartida
específica y, si la tarea tiene éxito, entonces el archivo de origen debería ser
renombrada y movida a la carpeta Archivos Procesados. El vídeo de este ejercicio se encuentra en: https://www.youtube.com/watch?v=SiU98QejNng Los pasos más
importantes son descritos a continuación aquí:
1. Abrir el SQL Server Data Tools (SSDT) y crear un nuevo proyecto SSIS.
2. Proporcione un nombre y una ubicación para el proyecto SSIS y proceda.
3. Seleccione el paquete creado por defecto y cámbiele el nombre a FileSystem.dtsx.
4.
Para hacer al paquete flexible
para cambios futuros, crear variables SSIS para el origen, el destino y los
valores NombreArchivo. En el panel Variables,
haga clic en el botón Add variable
para crear las siguientes variables:
·
vuDirectorioOrigen como tipo de
datos String con la ruta de origen de
archivo plano:
C:\SSIS\Control
Flow\Archivos
·
vuDirectorioDestino como tipo de
datos String con la ruta de destino
de archivos planos:
C:\SSIS\Control Flow\Archivos\Archivos
Procesados
·
vuNombreArchivo como tipo de datos String con el nombre de origen de
archivo plano:
ArchivoTextoPlano
6. Desde la Toolbox SSIS, arrastre y suelte
un componente de origen Flat File al
diseñador y edítelo, nómbrelo como Leer Archivo Plano.
7. Crear una nueva conexión cmFlatFile que apunta al origen de
archivo plano ArchivoTextoPlano.txt.
8. Desde el Toolbox SSIS, arrastre y suelte
una Derived Column (nómbrela como Hacer Alguna Transformacion) para aplicar una concatenación del nombre
con el apellido (en el campo Expression colocar: Nombre + " " + Apellido) en el campo Derived Column Name
coloque NombreCompleto.
9. Para ver el flujo de datos fluyendo
en la pipeline, agregue un componente Unión
All (este componente debería ser reemplazado con un componente de destino).
·
En
el desplegable Operation, seleccione
Move File.
·
En
las propiedades Source Connection seleccione
la conexión cmFlatFile en el
desplegable SourceConnection creado
previamente.
·
En
las propiedades Destination Connection,
establezca IsDestinationPathVariable
a True y seleccione la variable de
usuario vuDirectorioDestino en el desplegable
DestinationVariable con ruta de
carpeta de destino.
11.
Pulse
el botón OK para finalizar y
vincular la tarea Data Flow para esta tarea a través de la flecha de salida
verde.
12.
Ejecute
el paquete pulsando F5 y si es exitoso,
eche un vistazo a la ubicación del sistema de archivos para confirmar si el
archivo fue trasladado a ...\Archivos Procesados.
13.
Arrastre
y suelte otra tarea File System para
renombrar el archivo movido en el paso anterior; renómbrelo como Renombrar Archivo
Procesado. Una la tarea
File System anterior con la actual, con la flecha de salida verde
14.
En
la desplegable Operation, seleccione
Rename File.
15.
En
las propiedades SourceConnection
seleccione New Connection… en la desplegable
SourceConnection, y establezca esta
conexión al archivo renombrado creado antes. Renombre la conexión recién creada
como cmProcessedFile.
16.
En
las propiedades DestinationConnection
seleccione DestinationConnection en
el desplegable New Connection, y
establezca esta conexión al archivo renombrado creado antes. Renombre la
conexión recién creada como cmRenamedFile.
17.
Pulse
el botón OK para finalizar y
vincular la tarea File System anterior a esta tarea a través de la flecha de
salida verde.
18. En el administrador de conexión del
paquete, seleccione cmRenamedFile,
vaya al panel Properties y pulse Expressions para construir
dinámicamente la conexión.
19.
Mueva
manualmente el archivo ArchivoTextoPlano.txt movido durante la ejecución previa, al directorio ...\Archivos Procesados, a su ubicación original.
20. Ejecute el paquete de nuevo
presionando F5 y si tiene éxito, eche
un vistazo a la ubicación del sistema de archivos para confirmar si el archivo fue
renombrado y trasladado a ...\Archivos Procesados.
21. Si el paquete se ejecuta de nuevo,
un error se disparará porque el archivo de origen ya no existe (el archivo
cambió de nombre y se trasladó a un lugar diferente).
22. Hacer uso de los registros generados
por SSIS en la ficha Progress para cada
ejecución del paquete y ver varios tipos de entradas de registro que
proporcionarán una información más precisa sobre cada ejecución.
Este ejercicio podría necesitar varias mejoras. Si hay una necesidad de
iterar sobre una serie de archivos o directorios, la tarea File System puede ser
colocada dentro de un bucle como un Foreach Loop.
Como una consecuencia, y debido a que los nombres de archivos cambian,
las conexiones de paquetes deben ser pasadas dinámicamente a través de
expresiones SSIS. Se sugiere que incluye una tarea para verificar si cada
archivo que será ejecutado en cada interacción del bucle exista en la ubicación
del sistema de archivos como se ha configurado en el paquete.
2 comentarios:
Aquí tenemos esta tarea File System, incluido un vídeo en youtube. poco a poco iré incluyéndole un video a todos los post.
Narcizo para leer 3 archivos dbf y renombrar el nombre tengo que usar 3 variables como source y destino?
Publicar un comentario