Saltar a contenido

job-ingesta-salesforce-catalogo

ETL diario del catálogo de Salesforce Commerce Cloud (tiendas Moov, Dexter y StockCenter).

Dos jobs independientes: v4 y v5

Las dos versiones corren todos los días y son jobs separados en el panel. Hacen lo mismo y solo cambian la base destino y los esquemas:

Job Subcomando Destino Esquemas (aterrizaje / transformación) Hora Catálogo
salesforce_catalogo_v4 v4 base ATHENAS stg / ods 08:00 L20
salesforce_catalogo_v5 v5 base METIS dwh_bronze / dwh_silver 14:00 L25 (ex X01)

Estado de migración

Job Estado
salesforce_catalogo_v4 ✅ Migrado (1.ETL_Input_Catalogo_Salesforce_v4.py)
salesforce_catalogo_v5 ✅ Migrado (1.ETL_Input_Catalogo_Salesforce_v5.py)

¿Qué hace cada ejecución?

  1. Descarga por SFTP los ZIP de cada tienda (/home/<usuario>/OUT/<tienda>).
  2. Los descomprime (también ZIP anidados) y reúne los archivos .pdv.
  3. Vacía (TRUNCATE) la tabla de aterrizaje stg_bi_salesforce_catalogo y la llena, todo en una sola transacción: si falla, conserva los datos anteriores. Si la tabla no existe, la crea.
  4. Ejecuta SP_SALESFORCE_CATALOGO_BI para transformar.
  5. Registra el resultado en tbl_control_procesos (Success / No Data / Failed) y envía un correo.

Si los .pdv no traen filas, no toca la base (No Data). Si algo falla, el job termina en error y los archivos descargados quedan en disco para diagnosticar.

¿Qué hacer si falla?

  1. Alerta EXIT_NONZERO y correo “[Failed] Proceso Carga Salesforce …” con el detalle.
  2. Fallos vistos en el log: columnas que no coinciden con el SP (cambió el formato del feed), esquema inexistente en la base. v4 y v5 son independientes: que una falle no afecta a la otra.
  3. Reejecutar es seguro. Si el feed cambió de columnas o de tipos, el job falla antes de tocar nada y pide reejecutar con --recrear-staging. Detalle en RUNBOOK.md.

Para desarrolladores

python3.11 -m venv .venv && . .venv/bin/activate
pip install -e ".[dev]"        # pyodbc requiere unixODBC y "ODBC Driver 17 for SQL Server"
cp .env.example .env && chmod 600 .env
pytest && ruff check .
python -m ingesta_salesforce_catalogo v4 --dry-run   # descarga y lee los .pdv; no carga ni audita ni avisa
python -m ingesta_salesforce_catalogo v5 --dry-run
python -m ingesta_salesforce_catalogo v5 --recrear-staging   # borra y recrea el staging (feed con estructura nueva)
python tools/verify_equivalence.py <ruta>/code/activo/PY_RECIBE_SALESFORCE_MINERVA_DIARIO

Fuente: repositorio job-ingesta-salesforce-catalogo, versión 44c4764. Página generada con tools/publicar_docs.py.