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?¶
- Descarga por SFTP los ZIP de cada tienda (
/home/<usuario>/OUT/<tienda>). - Los descomprime (también ZIP anidados) y reúne los archivos
.pdv. - Vacía (
TRUNCATE) la tabla de aterrizajestg_bi_salesforce_catalogoy la llena, todo en una sola transacción: si falla, conserva los datos anteriores. Si la tabla no existe, la crea. - Ejecuta
SP_SALESFORCE_CATALOGO_BIpara transformar. - 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?¶
- Alerta
EXIT_NONZEROy correo “[Failed] Proceso Carga Salesforce …” con el detalle. - 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.
- 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 enRUNBOOK.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.