En el anterior post te expliqué cómo podemos extraer los datos de Dataverse y sincronizarlos con ficheros en una cuenta de almacenamiento (Azure Blob Storage). Si no lo has visto, te invito a verlo aquí:
Explotar datos de Dataverse en Power BI (I) con Azure Blob Storage – Dynamics Box
Ahora vamos a trabajar para que estos datos viajen desde el blob storage a un Azure SQL Server y esto lo vamos a conseguir con Azure Data Factory. Seguiremos utilizando Azure Blob Storage para extraer los datos de Dataverse pero.. ¿Qué debemos tener en cuenta para el coste de Azure Data Factory?
- El propio coste de Azure Blob Storage
- Frecuencia de sincronización: Azure Data Factory nos cobrará por número de ejecuciones
- Cantidad de datos: Ya que, también tendremos que contar el tiempo de ejecución
- Control de simultaneidad: También debemos tener en cuenta si queremos que estos datos se sincronicen en paralelo
Esto son los factores que, en mi caso, me hicieron decantarme por una opción más económica que Azure Synapse Analytics. Sin embargo puedes hacerte una estimación desde esta página.
Blob Storage + Azure Data Factory = Azure SQL
Tendremos que dar de alta una instancia de Azure Data Factory. Cuánto más cerca lo escojamos, más económica nos costará la ejecución. Una vez creado, abriremos Data Factory Studio:
Una vez aquí nos toca configurar nuestro pipeline. Si queremos ir más rápidos podemos escoger una plantilla ya existente:
Aquí buscaremos dataverse y encontraremos justo lo que queremos conseguir:
Sin embargo, iremos un paso más y configuraremos el pipeline a mano. De esta manera podemos observar todos los detalles del proceso:
Configurar datos de origen
Este flujo debe ir desde el Azure Blob Storage hasta Azure SQL. Vamos a añadir un origen con los siguientes datos:
Parámetro | Valor |
Nombre | Blob_storage |
Tipo de origen | Insertado |
Tipo de conjunto | Common Data Service |
Servicio vinculado | *Crearemos uno y configuraremos la conexión a Blob Storage |
Muestreo | Deshabilitado |
Crear la conexión con el servicio de blob storage es increíblemente sencillo tanto si estamos en la misma suscripción como si no:
Ahora nos vamos a dirigir a la pestaña de “Opciones de origen” y aquí vas a marcar el formato de metadatos en Model.json y justo a la derecha del campo “Ubicación Raíz” tenemos el botón examinar y vamos a seleccionar la carpeta que ha creado Dataverse (en mi caso dataverse-eromerof…):
Justo debajo de todo esto tenemos un campo que cita “Entidad”. Aquí debemos introducir el nombre lógico de la entidad (Por ejemplo account o contact):
Vamos a la siguiente pestaña de “Proyección” y vamos a hacer click sobre el botón “Opciones de esquemas”:
Y vamos a marca la opción de “Permitir desfase de esquemas”:
Configurar datos de destino (Azure SQL)
Ahora vamos a configurar los datos de destino que en nuestro caso será un Azure SQL. vamos a pulsar sobre el ‘+’ que tenemos justo debajo del cuadro de origen y vamos a escoger la opción de “receptor”:
Aquí tenemos que configurar el conjunto de datos que será un Azure SQL. Utilizaremos los siguientes valores:
Parámetro | Valor |
Nombre | AzureSQLTable |
Secuencia entrante | BlobStorage |
Tipo de receptor | Conjunto de datos |
Conjunto de datos | *Debemos configurar la conexión a la tabla* |
Opciones | Marcamos la de “Permitir desfase del esquema” |
Para crear el conjunto de datos debemos seleccionar el proveedor de Azure SQL Database:
Creamos la conexión al servicio:
Y por último pedimos que cree una nueva tabla y que se llame dbo.account:
En el flujo en la pestaña de “Configuración” debemos marcar la opción de “Volver a crear tabla”. Esta opción permitirá que el esquema de la tabla se vuelva a crear cada vez que insertemos. No es lo mejor para el rendimiento pero es la mejor opción para sincronizar campos entre tablas.
Si has llegado hasta aquí.. ¡Enhorabuena! Significa que hemos pasado la parte más tediosa del proceso. ¿Qué nos queda? Pues decirle al flujo de datos la frecuencia y el orden en que debe ejecutarse.
Configurar frecuencia y orden de ejecución
Para ello vamos a desplazarnos a la parte de “Canalizaciones” y vamos a crear una nueva:
Vamos a arrastrar el flujo de datos hacia la zona de trabajo del pipeline:
Por último vamos a agregar el desencadenador donde vamos a configurar la frecuencia de ejecución del pipeline y… voilà!
Y.. si has llegado aquí ya has conseguido configurar el pipelines. Ahora tienes que guardar, publicar y ejecutar. En mi caso siguiendo estos pasos he logrado sincronizar los datos con mi tabla pero si tienes dudas te espero en comentarios 😉
Desde muy joven he sido un apasionado por la tecnología pero no fue hasta hace algo más de 8 años que me presentaron a Dynamics 365 (para entonces Dynamics CRM) y ahora, junto con toda la power platform, nos hemos hecho muy amigos. Me encanta desarrollar hasta llegar a la forma más óptima y sencilla de realizar las cosas porque (como se dice) en la sencillez reside la elegancia siempre y cuando respete el estándar del producto.
Hola Enrique, una duda, los borrados de registros ¿cómo se trasladarían a la base de datos?
Hola Diego,
Con esta configuración si ya que cada vez que se importa al Azure SQL hemos configurado “recrear la tabla”. Quizá no es lo más óptimo pero nos aseguramos que no haya errores de sincronización 😉
Un abrazo!