Una conexión de almacenamiento puede cargar los datos semanales en tablas de tu propio almacén de datos en lugar de escribir archivos: Google BigQuery, aquí abajo, Snowflake, Databricks, Amazon Redshift con un rol tuyo (cargas en Amazon Redshift), o Microsoft Fabric y Azure Synapse como nuestra aplicación de Entra en un inquilino que verificaste, cada uno salvo BigQuery en su propio artículo. Los datos son los mismos que los archivos de las exportaciones a tu almacenamiento, con los mismos planes y tras la misma publicación semanal; con BigQuery, Redshift, Fabric y Synapse no nos das ninguna clave y no guardamos ninguna tuya.
Las tablas
Cada conjunto de datos va a una tabla del conjunto de BigQuery que indiques, con el nombre mercamap_ y el del conjunto: mercamap_shelf_snapshot, mercamap_gaps, mercamap_issues, mercamap_price_changes y mercamap_promotion_results. Sus columnas son las de los archivos, con los mismos nombres y en el mismo orden: una semana, un identificador o un texto es una cadena; un recuento, un entero; un número, un valor de coma flotante; y un sí o un no, un booleano. No se añade nada más: ni la hora de la carga ni el momento de un recorrido, solo la semana ISO que lleva cada fila en week. Un conjunto cuyas columnas cambian recibe una tabla nueva con su versión al final del nombre, y su tabla anterior se queda como estaba.
Creamos una tabla la primera vez que hace falta y no tocamos nada más de tu conjunto de datos salvo nuestras propias tablas: la tabla intermedia de cada carga (mercamap_staging_ seguido del conjunto y una clave propia), que se borra al terminar la carga o sola un día después, y la de cada prueba (mercamap_test_ y una clave propia).
Cada semana, sustituida de una vez
Un envío carga la semana de cada conjunto de datos como un solo paso: las filas de la semana van primero a la tabla intermedia y después una transacción borra las filas de esa semana de la tabla e inserta las de la tabla intermedia. Quien lee ve la semana anterior o la nueva, nunca la mitad, y un envío interrumpido o repetido nunca añade una fila dos veces. Las semanas anteriores se quedan hasta que las borres.
Un envío que falla se reintenta con el calendario de las exportaciones; tus administradores reciben un aviso tras 3 intentos fallidos seguidos, y tras 10 la conexión se desactiva sola. Un fallo nuestro o de Google (nuestra entrada, BigQuery ocupado o sin responder) se reintenta y nunca cuenta.
Google BigQuery
Configurarlo
- Conecta: abre Conectores, entra en Google BigQuery e indica el ID de tu proyecto y el del conjunto de datos. El conjunto debe existir; nuestros trabajos se ejecutan en su proyecto, donde está su ubicación. Danos un conjunto de datos propio: solo tocamos nuestras tablas, pero el rol Editor de datos de BigQuery permitiría a nuestra cuenta de servicio cambiar cualquier tabla del conjunto. Si tiene una caducidad predeterminada de las tablas, nuestras tablas también la toman y sus semanas se van cuando llega: no le pongas ninguna.
- Da acceso nombra nuestra cuenta de servicio y cuatro puntos, tres con su comando para copiar, todos con Comprobar, que hace la prueba hasta ese punto: Editor de datos de BigQuery solo en el conjunto de datos (Añadir principal, o una instrucción
GRANTque ejecutabq query), la etiqueta de tu cuenta (Editar detalles › Etiquetas), Usuario de tareas de BigQuery en el proyecto (Conceder acceso), para que nuestros trabajos se ejecuten ahí, y la facturación del proyecto. - Elige los datos y, en Prueba y activa, pulsa Probar la conexión: lee la etiqueta, crea una tabla propia, carga en ella una fila, la vacía en una transacción y la borra, como hacen los envíos semanales. Si sale bien, aparece Activar.
bq update --set_label mercamap-account:ACCOUNT_ID PROJECT:DATASET
Todos los clientes dan acceso a la misma cuenta de servicio, así que antes de escribir nada leemos la etiqueta mercamap-account del conjunto de datos, que debe nombrar tu cuenta, y su ubicación, donde se ejecutan después nuestros trabajos: un conjunto etiquetado para otra cuenta, sin etiqueta o que no podemos leer se rechaza, y no se escribe nada. Un conjunto que la pasó se vuelve a leer al cabo de 15 minutos. Solo quien puede cambiar tu conjunto de datos puede etiquetarlo, así que ninguna otra cuenta puede hacer que nuestra cuenta de servicio cargue en él, y tus datos nunca van a un conjunto etiquetado para otra. Nunca leemos la lista de acceso del conjunto de datos.
Nuestra cuenta de servicio entra sin clave: Google le da un token que dura minutos y solo vale para BigQuery. El proyecto necesita una cuenta de facturación, porque el entorno aislado de BigQuery no admite instrucciones que borren o inserten filas, y la sustitución semanal es una de ellas.
Lo que cuesta
Los trabajos se ejecutan en tu proyecto, así que Google se los factura a él, a los precios de tu proyecto (precios de BigQuery):
- Cargar es gratis: Google no cobra los trabajos de carga en su grupo compartido.
- La sustitución de cada semana son dos instrucciones en una sola transacción, y cada una se factura por separado, con el mínimo de datos que BigQuery cobra por cada tabla que usa: el borrado, por la tabla entera; la inserción, por las filas de la semana. Se facturan por los bytes procesados a tu precio bajo demanda, después del nivel gratuito de cada mes, o con tus propios slots si compras capacidad.
- El almacenamiento de las filas que conserves, a los precios de almacenamiento de BigQuery; las tablas intermedia y de prueba duran minutos. Si tu conjunto de datos usa la facturación del almacenamiento físico, lo que borra cada sustitución y las tablas que eliminamos se siguen facturando como almacenamiento de viaje en el tiempo durante la ventana del conjunto (una semana, salvo que la hayas acortado), y después una semana más como almacenamiento a prueba de fallos (viaje en el tiempo).
Nuestros trabajos llevan la etiqueta mercamap, así que puedes encontrarlos, con sus bytes, entre los trabajos de tu proyecto (INFORMATION_SCHEMA.JOBS).
Cuando falla una carga
La conexión muestra su último fallo con nuestras palabras:
| Último fallo | Qué hacer |
|---|---|
| «el conjunto de datos no está preparado para esta cuenta…» | Revisa el ID del conjunto de datos y etiquétalo con el comando de Da acceso |
| «a la cuenta de servicio de MercaMap le falta un rol que necesita…» | Da roles/bigquery.jobUser en el proyecto y roles/bigquery.dataEditor en el conjunto |
| «el proyecto no tiene cuenta de facturación…» | Vincula una cuenta de facturación al proyecto: el entorno aislado no admite la sustitución |
| «una tabla nuestra se cambió…» | Renombra esa tabla para conservar sus semanas; el próximo envío vuelve a crear la nuestra con sus columnas |
| «el almacén de datos lo rechazó por una cuota…» | Revisa las cuotas de BigQuery de tu proyecto |
Cada uno cuenta como un fallo de la conexión. «No respondió» es nuestro o de Google, y nunca cuenta.