Una conexión de Databricks carga los datos semanales en tablas Delta de un esquema de Unity Catalog de tu propia área de trabajo, como explican las cargas en tu almacén de datos: una tabla por conjunto de datos, cada semana sustituida de una vez, con los mismos planes y tras la misma publicación semanal. MercaMap entra como una entidad de servicio de tu área de trabajo, con un secreto OAuth que creas para ella.
Cómo entra
La entidad de servicio es tuya: le das lo que necesitan las cargas y nada más. Pegas su secreto OAuth en nuestro formulario una vez; lo guardamos cifrado, no lo volvemos a mostrar y lo cambiamos en tu área de trabajo por un token que dura una hora, guardado en memoria mientras dura. La vigencia de un secreto es la que eliges al crearlo: crea otro, y pégalo en el formulario, antes de que caduque.
Configurarlo
- Conecta: en Settings › Identity and access › Service principals › Manage de tu área de trabajo, añade una entidad de servicio con el derecho Databricks SQL access (en su pestaña Configuration) y genera para ella un secreto OAuth en Secrets › Generate secret. Después abre Conectores, entra en Databricks e indica la dirección de tu área de trabajo, el ID del SQL warehouse (en sus datos de conexión), el catálogo, el esquema, un volumen de ese esquema, el ID de aplicación de la entidad de servicio y su secreto. El catálogo y el esquema deben existir.
- Da acceso, punto por punto, cada uno con Comprobar: en SQL Warehouses, en ⋮ › Permissions de tu SQL warehouse, da a la entidad de servicio Can use; en el SQL Editor, como propietario del catálogo o del esquema, ejecuta los permisos del catálogo y del esquema; y, como propietario del esquema, crea el volumen de paso con sus permisos. Un SQL warehouse sin servidor arranca en segundos y se detiene solo.
- Elige los datos y, en Prueba y activa, pulsa Probar la conexión: entra, crea una tabla propia, carga en ella una fila desde un archivo del volumen, la vacía y la borra, como hacen los envíos semanales. Si sale bien, aparece Activar.
GRANT USE CATALOG ON CATALOG `main` TO `APPLICATION_ID`;
GRANT USE SCHEMA, CREATE TABLE ON SCHEMA `main`.`mercamap` TO `APPLICATION_ID`;
GRANT READ VOLUME, WRITE VOLUME ON VOLUME `main`.`mercamap`.`staging` TO `APPLICATION_ID`;
La entidad de servicio no necesita MODIFY ni SELECT: es la propietaria de las tablas que crea, así que puede escribirlas y leerlas, y nada más de lo tuyo. Danos un esquema propio. Tus grupos leen nuestras tablas cuando les das SELECT sobre el esquema. Llegamos a tu área de trabajo por su dirección pública: un área de trabajo tras un enlace privado, o con una lista de acceso por IP, aún no admite nuestras peticiones; escríbenos antes.
Las tablas
Nuestras tablas se llaman mercamap_ y el nombre del conjunto de datos (mercamap_shelf_snapshot, mercamap_gaps…), con las columnas de los archivos: un texto es STRING; un recuento, BIGINT; un número, DOUBLE; y un sí o un no, BOOLEAN.
Cada carga deja los archivos CSV de la semana, comprimidos con gzip, en una carpeta propia del volumen (mercamap/ y el conjunto de datos), sustituye la semana con una sola sentencia que los lee (INSERT … REPLACE WHERE, que Delta confirma entera: una fila de otra semana la hace fallar, y no se escribe nada) y borra sus archivos. Una carga interrumpida deja su carpeta, que limpia una carga posterior de su conjunto de datos cuando sus archivos tienen un día. Una semana sin filas se borra con una sola sentencia. La tabla de la prueba es mercamap_test_ y una clave propia; una prueba interrumpida deja su carpeta en mercamap/_test, que limpia la prueba siguiente cuando tiene un día, y su tabla, que puedes borrar.
Lo que cuesta
Las sentencias se ejecutan en tu SQL warehouse, así que Databricks te las factura a ti, a los precios de tu cuenta (precios de Databricks):
- Las DBU del SQL warehouse mientras funciona: la sustitución de la semana, la creación de su tabla y la prueba. Uno sin servidor arranca en segundos y se detiene tras su parada automática; uno pro o clásico tarda minutos en arrancar, sigue en marcha hasta su parada automática y también se facturan sus instancias en la nube.
- El almacenamiento del volumen y las peticiones a su API, que te factura tu proveedor de nube, o Databricks en su almacenamiento predeterminado: nuestros archivos están ahí minutos. Subirlos por la Files API no lleva cargos de transferencia de datos de Databricks, que solo cobra los datos que devuelve a un cliente de otra región o por internet (transferencia de datos).
- El almacenamiento de las filas que conserves en las tablas, y el de los archivos que deja atrás cada sustitución, hasta que VACUUM los quita, de forma predeterminada cuando tienen una semana.
Cuando una carga falla
La conexión muestra su último fallo con nuestras palabras:
| Último fallo | Qué hacer |
|---|---|
| «Databricks no aceptó el secreto OAuth de la entidad de servicio…» | Crea otro secreto y pégalo en el formulario |
| «a la entidad de servicio le falta un privilegio que necesita…» | Ejecuta los permisos de Da acceso y dale Can use en el SQL warehouse |
| «el catálogo, el esquema, el volumen o el SQL warehouse no existen…» | Revisa los nombres y el ID del SQL warehouse |
| «una tabla nuestra se cambió…» | Cambia el nombre de esa tabla para conservar sus semanas; el próximo envío vuelve a crear la nuestra |
| «ningún área de trabajo de Databricks responde en esa dirección» | Revisa la dirección del área de trabajo |
Cada uno cuenta como un fallo de la conexión. «No respondió» es nuestro o de Databricks, y nunca cuenta.