Está en la página 1de 37

Ejercicio Azure DataFactory

● Se entregan 4 archivos .parquet los cuales deben ser cargados manualmente en una carpeta del storage.
○ https://drive.google.com/drive/folders/1WjqYd7Bu2DYhit80145WWyL1yjttcNHj?usp=sharing
● Se deben crear dos Linked Service y dos Datasets.
● Se debe crear un pipeline que cargue esos 4 archivos en su correspondiente tabla en una base de datos relacional.

Datos de conexión para la base de datos


■ Nombre de servidor
diplomado-server.database.windows.net
■ Base de datos
diplomado-db
■ Usuario
diplomado-user
■ Contraseña
fkwa#3qMi80B
Creando Linked Services
Vamos a iniciar creando los Linked Services, los cuales son capas de autenticación, es decir, en ellos vamos a configurar todo lo
relacionado con las fuentes y sus accesos. Posteriormente vamos a reusarlos desde los Datasets.

Para crear un Linked Service:


1. Vamos a la opción Manage
2. Vamos a la opción Linked services en la sección Connections
3. Damos click en en botón New
Creando Linked Service ADLS Gen2

En el menú de New linked service que aparece, debemos


seleccionar el tipo de linked service que queremos crear, en
este caso buscamos el tipo Azure Data Lake Storage Gen2 la
gran diferencia entre el Gen2 y el Gen1 es el uso de carpetas y
estructuras jerárquicas en el Gen2, que no tiene el Gen1
En el siguiente paso, tenemos todas las configuraciones del
linked service elegido (Azure Data Laje Storage Gen2).

1. Tenemos el nombre y la descripción. Con respecto al


nombre es importante recordar que los nombres de los linked
service no se pueden editar una vez son creados.
2. Tipo de autenticación, en nuestro caso es Account
Key este tipo de autenticación requiere de una url tipo
https://<accountname>.dfs.core.windows.net y una
Storage account key. Veremos en el siguiente paso como se
consultan ambos datos.
3. Se selecciona Enter manually en este caso.
4. Casilla para ingresar la url de la cuenta de
almacenamiento (storage account).
5. Se selecciona el boton Storage account key
6. Casilla para ingresar la storage account key
7. La opcion Test connection se deja en To linked
service
8. Botón que se habilita al completar todos los valores
requeridos y que permite hacer prueba de la conexión.
9. Boton de crear para finalizar y guardar el linked
service
Consultando Storage Account Endpoints y Storage Account Key
1. Como primer paso necesitamos ubicar nuestra Storage account desde el inicio del Azure Portal
2. O desde la barra de búsqueda.
3. Una vez localizado ingresamos dando click sobre el nombre de nuestro Storage Account
● Dentro del Storage account buscamos en el menú de la izquierda la opción Endpoints en la sección Settings
● Y en Endpoints buscamos la url para Data Lake Storage.
Esa url debe ser copiada en la configuración del Linked Service
● Para conseguir la clave, sobre la misma configuración buscamos Access Keys sobre el menú de la izquierda en la sección
Security + networking
● Y en Access keys copiamos la key1, dando click primero en Show.
Esa clave debe ser copiada en la configuración del Linked Service
Finalmente, así se vería el linked service con todos los campos
requeridos ya completados.
Nótese la Url ingresada, la Storage account key igualmente
ingresada, el botón de Create habilitado y el botón de Test
connection habilitado.
Al dar crear salta un mensaje que indica que estos cambios serán
publicados en nuestro repositorio. (las contraseñas se envían
codificadas).
Creando Linked Service ASQL Database
Creamos un nuevo linked service como lo vimos al inicio y en el menú de New
linked service que aparece, debemos seleccionar el tipo de linked service que
queremos crear, en este caso buscamos Azure SQL Database.
Existen muchos tipos de Databases en esta lista y pueden ser muy similares,
pero siempre es necesario seleccionar el tipo de base de datos correcta.
En el siguiente paso, tenemos todas las configuraciones del linked
service elegido (Azure SQL Database).
1. El nombre y la descripción. Con respecto al nombre es
importante recordar que los nombres de los linked service
no se pueden editar una vez son creados.
2. Se selecciona Connection string en este caso.
3. Se selecciona Enter manually en este caso.
4. Se ingresa la direcion del server ASQL tipo
myserver.database.windows.net
5. Se ingresa el nombre de la base de datos
6. Se selecciona SQL authentication
7. Se ingresa el nombre de usuario
8. Se selecciona Password en este caso
9. Se ingresa el password del usuario anterior
10. Botón que se habilita al completar todos los valores
requeridos y que permite hacer prueba de la conexión.
11. Boton de crear para finalizar y guardar el linked service
● Con los datos completos podemos hacer prueba de
conexión y validar si todo está bien configurado.
● Recordar que es necesario guardar el nuevo servicio
vinculado con un nombre apropiado, puesto que su nombre
no se puede cambiar.
Creando los Datasets
Para crear los datasets podemos dirigirnos a la lista de Datasets (en los tres puntos a la derecha) seleccionamos Nuevo dataset o
New dataset.
Creando Dataset parquet

Seleccionamos el tipo de dataset a crear, en este caso Azure Data Lake Storage Gen2
Seleccionamos el tipo de archivo a trabajar (parquet) con ese dataset:
En el paso siguiente solo damos un nombre apropiado para el dataset tipo parquet, seleccionamos el Linked Service a usar (en
este caso se usa el Linked Service de tipo Parquet creado anteriormente) y guardamos el dataset
El siguiente paso en la creación y configuración del dataset tipo parquet, es crear dos parámetros (para eso nos dirigimos a la
pestaña Parameters dentro del Dataset), en este caso se nombran SistemaDeArchivos y RutaDeArchivos, se establecen en tipo
String y sin valores por defecto.
Luego nos dirigimos a la pestaña Connection para usar los parámetros creados en el paso anterior para definir las casillas de
FileSystem y Directory, tal como se muestra en la imagen:

Nótese que en este caso no tenemos un parámetro para File name, por lo que lo dejamos vacío.
Creando Dataset ASQL Database
Configuramos el siguiente dataset, para eso buscamos Nuevo dataset o New dataset y buscamos en el listado en este caso Azure
SQL Database. Damos en continuar.
Luego, debemos poner un nombre apropiado para el dataset para ASQL y seleccionar el Linked Service a usar (en este caso el
linked service creado anteriormente para Azure SQL Database).
Dejamos el resto como está y damos en OK.
Ya tenemos creado el dataset para Azure SQL Database, el siguiente paso es configurarlo.
Nos dirigimos a la pestaña Parameters
Creamos 2 parámetros, en este caso se nombran Tabla y Esquema
Finalmente, con los dos parámetros creados en el paso anterior nos dirigimos a la pestaña Connection.
Primero habilitamos la casilla de verificación Edit (ésto para que nos habilite los dos campos, para el esquema y la tabla)
Luego, se configura en este caso el parámetro Esquema en la primera casilla y el parámetro Tabla en la segunda casilla
Carga inicial de los archivos a Data Lake
Ahora necesitamos subir los archivos parquet a nuestro almacenamiento.
Para esto vamos a nuestra cuenta de almacenamiento y creamos una nueva carpeta.
1. Buscamos Storage browser (preview) o Explorador de almacenamiento (versión preliminar)
2. Luego bajo Blob containers buscamos nuestro Filesystem, en este caso container-name.
3. Creamos una nueva carpeta usando el botón Add Directory.
4. Damos nombre a la carpeta y guardamos
Dentro de la carpeta creada cargamos los archivos parquet.
1. Usamos el Botón Upload y se abre un menú a la derecha.
2. En el menú desplegado podemos arrastrar los archivos o usar el vínculo Browse for files para buscar los archivos en el
sistema.
3. Una vez seleccionados los archivos los cargamos usando el botón Upload
Creando el pipeline
Hasta el momento hemos creado 2 Linked Service los cuales se encargan de la autenticación.
Tenemos 2 Datasets los cuales se encargan de la ubicación de los archivos o tablas.

Ahora vamos a crear un pipeline nuevo para realizar el movimiento de datos desde archivos parque a tabla en database.

● Creamos el pipeline, usamos el icono resaltado en la imagen (desde aquí también podemos crear datasets o dataflows),
luego seleccionamos pipeline y luego pipeline nuevamente, se crea con el nombre pipeline# siendo # el número disponible
iniciando desde 1.
Get Metadata Activity
Buscamos la actividad Get Metadata (en la sección General) y la añadimos al área de trabajo del nuevo pipeline creado.

Por defecto siempre que se añade o arrastra una actividad, despliega un menú en la parte inferior con diferentes opciones o
pestañas que varían con cada actividad.
Siempre la primera de esas pestañas es General, donde podemos:
● Ajustar el nombre
● Añadir una descripción
● Ajustar el timeout de la actividad, por defecto 7 días.
● Añadir número de reintentos (por defecto 0) y su intervalo en segundos (por defecto 30)
● Establecer entrada y salida segura de los datos.

Luego nos movemos hacia la pestaña Settings (entre las opciones o pestañas de la actividad) para configurar las opciones de Get
Metadata
Posicionados en la pestaña Settings, tenemos todas las configuraciones para la actividad Get Metadata:
1. Seleccionamos el dataset, en este caso se selecciona el dataset para parquet configurado anteriormente con dos
parámetros.
2. Configuramos los parámetros del dataset, en el parámetro SistemaDeArchivos en este caso container-name y en
RutaDeArchivos ponemos el nombre de la carpeta creada, donde se cargaron los archivos parquet.
3. Para el campo Field list, añadimos un argumento con el símbolo resaltado y en la lista desplegable seleccionamos Child
items
4. Con esta configuración completa ya se puede ejecutar para validar la correcta configuración de la actividad, para eso use el
botón Debug.
Nota: Para que la opción Child items aparezca en la lista, el dataset no debe tener configurado el File Name.
Ejecutando el pipeline
Una vez ejecutada la actividad, podemos ver (entre las opciones o pestañas del pipeline) en la opción Output, cada actividad
ejecutada, duración, status, entre otros.

Es importante notar que frente al nombre de cada actividad tendremos dos botones correspondientes al Input y el Output (o salida)
de la actividad.

Recordar que para ver las opciones o pestañas del pipeline es necesario no seleccionar cualquier actividad, de esa manera
podemos ver las opciones Parameters, Variables, Settings y Output correspondientes al pipeline.
El Output o Salida de la actividad Get Metadata, es importante por que se necesita usar como entrada de la siguiente actividad.
Usamos el botón Copy to clipboard para copiar toda la salida y analizarla en un editor de código.

● Esta es la salida completa de la actividad Get Metadata.


● Indicar que la salida es un objeto del tipo JSON.
● Dentro de la salida tenemos la LLAVE childItems, la cual es una lista de elementos.
● Cada elemento de la lista childItems es un objeto del tipo JSON.
● Cada elemento de la lista childItems tiene dos llaves name y type.
● La llave type me indicará si se trata de un archivo o una carpeta.
ForEach Activity
Buscamos la actividad ForEach en la sección Iteration & Conditionals y la arrastramos al área de trabajo del pipeline.
Por defecto tenemos la pestaña General donde podremos ajustar el nombre y añadir una descripcion.

Creamos la relación entre Get Metadata Activity y ForEach Activity dando click sostenido sobre el elemento resaltado y soltandolo
sobre la actividad a relacionar, en este caso ForEach.

Luego nos pasamos a la pestaña Settings para configurar la actividad ForEach.


En Settings habilitamos la opción Sequential, pues queremos ejecutar una iteración tras otra y no todas al mismo tiempo de
manera paralela.

Luego en el campo Ítems nos posicionamos y se habilita la opción Add dynamic content, damos click ahí
Se nos abre una ventana a la derecha para trabajar el contenido
dinámico.
En esta ventana tenemos:
1. Un espacio para el ingreso de texto
2. Texto de ayuda con vínculos útiles
3. Cuadro de búsqueda de variables y funciones
4. Lista de salidas de actividades

En el cuadro de texto necesitamos ingresar

@activity('Get Metadata1').output.childItems.

Pero también podemos hacer lo mismo mediante la lista de


salidas de actividades (4), dando click en

Get Metadata1 childItems

tendremos el mismo resultado que se ve en la imagen de la


derecha.

Cabe resaltar que le estamos pasando a la actividad ForEach, la


lista de elementos que nos dio como salida la actividad Get
Metadata.

Finalmente, con el contenido correctamente ingresado guardamos


dando en el botón OK
Luego de configurar el ForEach, lo siguiente es configurar las actividades que se ejecutan dentro del loop.
Nos dirigimos a la opción Activities
Nótese que la actividad ForEach, debe estar seleccionada para que sus opciones aparezcan.
En la pestaña Activities damos click en el icono resaltado.
Este mismo icono lo encontramos sobre la actividad y sirve de la misma manera.
Lo anterior nos lleva dentro de la actividad ForEach, lo podemos comprobar en la parte superior izquierda sobre el área de trabajo
del pipeline.
Buscamos la actividad Copy data en la sección Move & transform de la lista de actividades.
Añadimos la actividad al área de trabajo del pipeline.
Copy Data Activity
Copy Data es la actividad que va a ejecutar la tarea de movimiento de datos, es decir, es la actividad encargada de tomar los datos
desde el origen (source) y escribirlos en el destino (sink).
Entre las opciones de la actividad tenemos inicialmente la pestaña general, donde podemos:
● Ajustar el nombre
● Añadir una descripción
● Ajustar el timeout de la actividad, por defecto 7 días.
● Añadir número de reintentos (por defecto 0) y su intervalo en segundos (por defecto 30)
● Establecer entrada y salida segura de los datos.
En la pestaña Source se encuentran las configuraciones relacionadas con el origen de los datos, en esta opción configuramos:
1. Seleccionamos el dataset origen, en este caso se usa el dataset tipo parquet y con dos parámetros configurado
anteriormente.
2. En la opción File path type, seleccionamos Wildcard file path, lo que significa que no usaremos los parámetros
(SistemaDeArchivos y RutaDeArchivos) del dataset.
3. Rellenamos los parámetros del dataset con la frase NO USADO, esto se hace por que no pueden quedar vacíos dichos
parámetros.
4. En la opcion Wildcard paths:
a. rellenamos la primera casilla con la carpeta donde se encuentran los datos
b. En la segunda casilla ingresamos @item()['name']. Lo que significa el elemento actual dentro del ForEach @item() y
de ese elemento la llave ['name'].
En la pestaña Sink, encontramos las configuraciones relacionadas con el destino, en este caso configuraremos:
1. Seleccionamos el dataset destino, en este caso se usa el dataset tipo Azure SQL configurado anteriormente con dos
parámetros Tabla y Esquema.
2. Configuramos el parámetro Tabla ingresando @concat(replace(item()['name'],'.parquet',''),'_NuevaTabla'). Esto significa:
a. toma el nombre de cada archivo en la carpeta. item()['name'],
b. reemplaza el texto ‘.parquet’ por un string vacío, es decir, lo elimina. replace( y '.parquet','')
c. y además concatena al nombre resultante el texto ‘_NuevaTabla’ (puede ser cualquier texto sin espacios) esto para
evitar duplicidad. concat( y '_NuevaTabla')
3. Configuramos el parámetro Esquema con el nombre del esquema donde se creará la tabla, en este caso SalesLT, que es
un esquema conocido. Nota: En caso de que el esquema no exista, se debe crear previamente.
4. Las opciones Write behavior >> Insert y Bulk insert table lock >> No no se modifican.
5. En Table option, se habilita Auto create table, ésto para que las tablas se creen automáticamente.
Las pestañas u opciones restantes Mapping, Settings y User properties del Copy data, no es necesario modificarlas para este
ejercicio, por lo que las saltaremos.
Con las anteriores configuraciones sobre el Copy data, ya tendremos listo el pipeline para ser ejecutado. Para ésto usamos el botón
debug.
Recordar guardar los cambios.
1. Botón debug para ejecutar el pipeline.
2. Actividades no seleccionadas
3. Opciones del pipeline
4. Botón de refresco para ver los cambios de las actividades ejecutándose.
5. Detalles de la ejecución

También podría gustarte