{"id":321,"date":"2026-08-24T16:16:19","date_gmt":"2026-08-24T16:16:19","guid":{"rendered":"https:\/\/tobolist.com\/?page_id=321"},"modified":"2026-08-31T16:33:00","modified_gmt":"2026-08-31T16:33:00","slug":"data-engineering","status":"publish","type":"page","link":"https:\/\/tobolist.com\/es\/data-engineering\/","title":{"rendered":"Ingenier\u00eda de datos"},"content":{"rendered":"\n<div class=\"tb-next tb-page\">\n\n  <!-- ============================================================\n       BARRA DE MARCA\n       ============================================================ -->\n  <nav class=\"tb-nav\" aria-label=\"Main\">\n    <a class=\"tb-nav-brand\" href=\"\/\" aria-label=\"Tobolist - home\">\n      <svg viewBox=\"0 0 402 58\" role=\"img\" aria-hidden=\"true\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n      <path fill=\"currentColor\" d=\"M 203.97 1.55 C 204.73 3.77 205.5 5.96 206.26 8.13 C 207.02 10.3 207.76 12.55 208.47 14.88 C 208.06 14.98 207.68 15.11 207.32 15.26 C 207.02 15.42 206.66 15.55 206.26 15.65 C 205.29 13.48 204.35 11.72 203.43 10.38 C 202.57 8.99 201.7 7.88 200.84 7.05 C 199.72 6.02 198.4 5.32 196.87 4.96 C 195.34 4.6 193.84 4.41 192.37 4.41 C 189.42 4.41 187.48 4.65 186.57 5.11 C 185.55 5.58 185.04 6.51 185.04 7.9 L 185.04 49.04 C 185.04 50.54 185.6 51.59 186.72 52.21 C 187.74 52.78 189.95 53.07 193.36 53.07 L 193.36 55.55 L 171.84 55.55 L 171.84 53.07 C 174.89 53.07 176.95 52.81 178.02 52.29 C 179.45 51.62 180.16 50.54 180.16 49.04 L 180.16 7.28 C 180.16 6.2 179.75 5.45 178.94 5.04 C 178.18 4.62 176.62 4.41 174.28 4.41 C 172.5 4.41 170.67 4.57 168.79 4.88 C 166.96 5.19 165.38 5.91 164.05 7.05 C 163.5 7.52 162.96 8.08 162.45 8.75 C 161.95 9.38 161.36 10.2 160.7 11.23 C 160.29 11.91 159.91 12.57 159.55 13.25 C 159.2 13.87 158.82 14.54 158.41 15.26 C 158.11 15.11 157.8 14.98 157.49 14.88 C 157.24 14.72 156.96 14.56 156.65 14.41 C 157.42 12.24 158.18 10.1 158.94 7.98 C 159.71 5.86 160.47 3.72 161.23 1.55 Z M 203.97 1.55 \"><\/path>\n      <path fill=\"currentColor\" d=\"M 234.5 37.96 C 234.5 43.74 232.88 48.37 229.62 51.83 C 226.52 55.29 222.55 57.02 217.71 57.02 C 212.83 57.02 208.84 55.29 205.73 51.83 C 202.48 48.37 200.85 43.74 200.85 37.96 C 200.85 32.18 202.48 27.55 205.73 24.09 C 208.84 20.63 212.83 18.9 217.71 18.9 C 222.55 18.9 226.52 20.63 229.62 24.09 C 232.88 27.55 234.5 32.18 234.5 37.96 Z M 229.31 37.96 C 229.31 33.21 228.19 29.31 225.95 26.26 C 223.87 23.21 221.12 21.69 217.71 21.69 C 214.36 21.69 211.55 23.21 209.32 26.26 C 207.13 29.31 206.04 33.21 206.04 37.96 C 206.04 42.66 207.11 46.56 209.24 49.66 C 211.43 52.65 214.25 54.15 217.71 54.15 C 221.02 54.15 223.77 52.65 225.95 49.66 C 228.19 46.61 229.31 42.71 229.31 37.96 Z M 229.31 37.96 \"><\/path>\n      <path fill=\"currentColor\" d=\"M 269.72 37.8 C 269.72 43.43 268.14 48 264.99 51.52 C 263.52 53.17 261.89 54.46 260.11 55.39 C 258.38 56.37 256.37 56.86 254.08 56.86 C 249.65 56.86 246.04 55.52 243.24 52.83 C 242.83 53.35 242.45 53.84 242.09 54.3 C 241.79 54.82 241.43 55.34 241.03 55.86 L 239.27 55.86 L 239.27 9.3 C 239.27 8.16 239.02 7.36 238.51 6.89 C 238 6.38 236.78 6.12 234.84 6.12 C 234.79 5.86 234.74 5.58 234.69 5.27 C 234.64 4.96 234.59 4.68 234.54 4.41 C 236.17 3.8 237.75 3.18 239.27 2.55 C 240.8 1.94 242.35 1.32 243.93 0.7 L 243.93 22 C 246.42 19.93 249.8 18.9 254.08 18.9 C 258.76 18.9 262.52 20.58 265.37 23.94 C 268.27 27.35 269.72 31.97 269.72 37.8 Z M 264.61 37.88 C 264.61 33.18 263.52 29.39 261.33 26.5 C 260.26 25.1 258.96 24.02 257.43 23.24 C 255.96 22.46 254.28 22.08 252.4 22.08 C 249.14 22.08 246.32 23.27 243.93 25.64 L 243.93 49.81 C 246.27 52.34 249.09 53.61 252.4 53.61 C 255.8 53.61 258.71 52.09 261.1 49.04 C 263.44 46.2 264.61 42.48 264.61 37.88 Z M 264.61 37.88 \"><\/path>\n      <path fill=\"currentColor\" d=\"M 308.05 37.96 C 308.05 43.74 306.42 48.37 303.16 51.83 C 300.06 55.29 296.09 57.02 291.26 57.02 C 286.37 57.02 282.38 55.29 279.27 51.83 C 276.02 48.37 274.39 43.74 274.39 37.96 C 274.39 32.18 276.02 27.55 279.27 24.09 C 282.38 20.63 286.37 18.9 291.26 18.9 C 296.09 18.9 300.06 20.63 303.16 24.09 C 306.42 27.55 308.05 32.18 308.05 37.96 Z M 302.86 37.96 C 302.86 33.21 301.74 29.31 299.5 26.26 C 297.41 23.21 294.66 21.69 291.26 21.69 C 287.9 21.69 285.1 23.21 282.86 26.26 C 280.68 29.31 279.58 33.21 279.58 37.96 C 279.58 42.66 280.65 46.56 282.79 49.66 C 284.97 52.65 287.8 54.15 291.26 54.15 C 294.56 54.15 297.31 52.65 299.5 49.66 C 301.74 46.61 302.86 42.71 302.86 37.96 Z M 302.86 37.96 \"><\/path>\n      <path fill=\"currentColor\" d=\"M 324.46 55.55 L 309.81 55.55 L 309.81 53.07 C 311.8 53.07 313.14 52.78 313.86 52.21 C 314.46 51.7 314.77 50.59 314.77 48.88 L 314.77 8.52 C 314.77 7.64 314.46 7.02 313.86 6.66 C 313.25 6.25 311.95 6.04 309.96 6.04 L 309.51 4.18 C 311.13 3.56 312.79 2.97 314.46 2.4 C 316.14 1.78 317.8 1.16 319.43 0.54 L 319.43 48.88 C 319.43 50.48 319.71 51.57 320.27 52.14 C 320.67 52.39 321.21 52.6 321.87 52.76 C 322.58 52.96 323.45 53.07 324.46 53.07 Z M 324.46 55.55 \"><\/path>\n      <path fill=\"currentColor\" d=\"M 340.23 4.34 C 340.23 5.58 339.82 6.61 339.01 7.44 C 338.19 8.26 337.18 8.68 335.95 8.68 C 334.84 8.68 333.89 8.26 333.13 7.44 C 332.42 6.61 332.06 5.58 332.06 4.34 C 332.06 3.1 332.44 2.07 333.21 1.24 C 333.97 0.41 334.89 0 335.95 0 C 337.18 0 338.19 0.41 339.01 1.24 C 339.82 2.07 340.23 3.1 340.23 4.34 Z M 343.81 55.62 L 329.54 55.62 L 329.54 53.07 C 331.63 53.07 332.98 52.76 333.59 52.14 C 334.1 51.67 334.35 50.82 334.35 49.58 L 334.35 27.27 C 334.35 26.13 334.12 25.36 333.66 24.95 C 333.11 24.48 331.76 24.25 329.62 24.25 L 329.31 22.54 L 339.01 18.82 L 339.01 49.58 C 339.01 51.03 339.23 51.93 339.69 52.29 C 340.36 52.81 341.73 53.07 343.81 53.07 Z M 343.81 55.62 \"><\/path>\n      <path fill=\"currentColor\" d=\"M 375.11 46.64 C 375.11 48.75 374.52 50.64 373.36 52.29 C 373.1 52.55 372.84 52.81 372.59 53.07 C 372.39 53.32 372.16 53.58 371.9 53.84 C 369.61 55.86 366.51 56.86 362.59 56.86 C 359.9 56.86 357.56 56.42 355.57 55.55 C 355.32 55.44 355.06 55.36 354.81 55.31 C 354.61 55.31 354.38 55.31 354.12 55.31 L 353.36 55.31 C 352.8 55.57 352.27 55.78 351.76 55.93 C 351.25 56.14 350.71 56.34 350.16 56.55 C 349.44 54.59 348.7 52.68 347.94 50.82 C 347.18 48.91 346.44 46.97 345.73 45.01 C 345.93 44.86 346.11 44.7 346.26 44.54 C 346.46 44.39 346.7 44.26 346.95 44.16 C 349.14 47.26 351.22 49.53 353.21 50.97 C 356.36 53.04 359.46 54.07 362.52 54.07 C 364.91 54.07 366.92 53.32 368.55 51.83 C 369.87 50.48 370.53 48.86 370.53 46.95 C 370.53 45.71 370.05 44.6 369.08 43.61 C 368.88 43.46 368.62 43.28 368.32 43.07 C 368.01 42.87 367.66 42.63 367.25 42.38 C 366.59 41.96 365.72 41.55 364.66 41.14 C 363.59 40.67 362.29 40.18 360.76 39.66 C 358.37 38.84 356.39 38.09 354.81 37.42 C 353.23 36.7 352.04 36 351.22 35.32 C 348.17 33.41 346.64 30.88 346.64 27.73 C 346.64 24.84 347.99 22.54 350.69 20.84 C 352.72 19.55 355.27 18.9 358.32 18.9 C 360.96 18.9 363.69 19.42 366.48 20.45 C 366.89 20.35 367.32 20.17 367.79 19.91 C 368.24 19.6 368.75 19.24 369.31 18.82 C 370.02 20.68 370.73 22.57 371.45 24.48 C 372.16 26.34 372.87 28.22 373.58 30.14 C 373.33 30.24 373.07 30.37 372.82 30.52 C 372.62 30.68 372.39 30.81 372.13 30.91 C 370.86 28.43 369.16 26.42 367.02 24.87 C 363.87 22.75 360.96 21.69 358.32 21.69 C 356.39 21.69 354.86 22.03 353.74 22.7 C 352.06 23.63 351.22 25.23 351.22 27.5 C 351.22 28.95 351.96 30.19 353.44 31.22 C 353.64 31.32 353.84 31.43 354.05 31.53 C 354.25 31.63 354.48 31.74 354.73 31.84 C 355.45 32.25 356.34 32.69 357.41 33.16 C 358.47 33.62 359.67 34.06 360.99 34.47 C 363.74 35.35 366 36.23 367.79 37.11 C 369.61 37.93 371.02 38.71 371.98 39.43 C 374.07 41.14 375.11 43.54 375.11 46.64 Z M 375.11 46.64 \"><\/path>\n      <path fill=\"currentColor\" d=\"M 396.65 47.95 C 396.91 48.16 397.14 48.34 397.34 48.5 C 397.59 48.65 397.85 48.8 398.1 48.96 C 397.19 51.13 395.94 52.94 394.36 54.38 C 392.58 56.09 390.65 56.94 388.56 56.94 C 385.82 56.94 383.73 55.93 382.3 53.92 C 381.9 53.2 381.57 52.37 381.31 51.44 C 381.06 50.51 380.93 49.48 380.93 48.34 L 380.93 22.7 L 374.98 22.7 L 374.98 20.22 C 377.73 20.22 379.76 19.16 381.08 17.04 C 382.56 14.62 383.3 11.16 383.3 6.66 L 385.59 6.66 L 385.59 19.68 L 395.58 19.68 L 395.58 22.7 L 385.59 22.7 L 385.59 48.88 C 385.59 51.62 387.01 52.99 389.86 52.99 C 392.15 52.99 394.41 51.31 396.65 47.95 Z M 396.65 47.95 \"><\/path>\n      <path fill=\"var(--tb-mark,#FF4001)\" d=\"M 102.74 0.61 L 30.22 0.61 C 15.14 0.61 2.91 13 2.91 28.29 L 2.91 29.11 C 2.91 44.4 15.14 56.8 30.22 56.8 L 102.74 56.8 C 117.82 56.8 130.05 44.4 130.05 29.11 L 130.05 28.29 C 130.05 13 117.82 0.61 102.74 0.61 Z M 117.73 45.16 C 113.47 49.48 107.8 51.86 101.78 51.86 C 95.75 51.86 90.08 49.48 85.82 45.16 C 84.41 43.72 83.19 42.11 82.21 40.38 C 78.98 34.67 72.98 31.15 66.5 31.14 L 66.48 31.14 C 60 31.14 54.01 34.65 50.77 40.35 C 49.79 42.09 48.56 43.7 47.12 45.16 C 42.86 49.48 37.2 51.86 31.17 51.86 C 25.14 51.86 19.47 49.48 15.21 45.16 C 6.41 36.24 6.41 21.72 15.21 12.8 C 19.48 8.48 25.14 6.11 31.17 6.11 C 37.2 6.11 42.87 8.48 47.12 12.8 C 48.56 14.25 49.79 15.87 50.77 17.61 C 54.01 23.31 60 26.82 66.48 26.82 L 66.5 26.82 C 72.99 26.81 78.98 23.29 82.21 17.59 C 83.19 15.85 84.41 14.24 85.82 12.8 C 90.09 8.48 95.75 6.11 101.78 6.11 C 107.8 6.11 113.48 8.48 117.73 12.8 C 122 17.12 124.34 22.87 124.34 28.98 C 124.34 35.09 122 40.84 117.73 45.16 Z M 117.73 45.16 \"><\/path>\n      <\/svg>\n    <\/a>\n    <ul class=\"tb-nav-links\">\n      <li><a href=\"\/services\/\" class=\"tb-on\">Services<\/a><\/li>\n      <li><a href=\"\/cases\/\">Work<\/a><\/li>\n      <li><a href=\"\/insights\/\">Insights<\/a><\/li>\n      <li><a href=\"\/about\/\">About<\/a><\/li>\n    <\/ul>\n    <a class=\"tb-nav-cta\" href=\"\/contact\/\">Contact<\/a>\n  <\/nav>\n\n\n  <!-- ============================================================\n       CABECERA DE PAGINA CON SIDEBAR\n       ============================================================ -->\n  <header class=\"tb-shead\">\n    <div class=\"tb-shead-main\">\n      <p class=\"tb-eyebrow-2\">Data engineering \u00b7 in detail<\/p>\n      <h1 class=\"tb-h2\">\n        Process, deliverables, pricing\n        <em>and what you&#8217;ll actually build.<\/em>\n      <\/h1>\n      <p class=\"tb-lede\">\n        Somebody has to write the pipelines that move data from source systems to dashboards.\n        This is the work that turns architecture diagrams into running code\u2014tested, monitored,\n        and maintained for the next team.\n      <\/p>\n    <\/div>\n\n    <nav class=\"tb-sindex\" aria-label=\"On this page\">\n      <p class=\"tb-sindex-k\">On this page<\/p>\n      <ol>\n        <li><a href=\"#process\"><span>01<\/span> Process<\/a><\/li>\n        <li><a href=\"#deliverables\"><span>02<\/span> Deliverables<\/a><\/li>\n        <li><a href=\"#case\"><span>03<\/span> Related case<\/a><\/li>\n        <li><a href=\"#pricing\"><span>04<\/span> Pricing<\/a><\/li>\n        <li><a href=\"#faq\"><span>05<\/span> FAQ<\/a><\/li>\n      <\/ol>\n    <\/nav>\n  <\/header>\n\n\n  <!-- ============================================================\n       PROCESO CON STEPS VERTICALES (con badges y l\u00ednea conectora)\n       ============================================================ -->\n  <section class=\"tb-sec\" id=\"process\">\n    <p class=\"tb-lead-label\">Process step-by-step<\/p>\n    <h2 class=\"tb-h3\">Engineering work follows a clear build sequence.<\/h2>\n    <p class=\"tb-lede tb-lede-narrow\">\n      You can&#8217;t transform data before you&#8217;ve ingested it. You can&#8217;t optimize queries before\n      you know which ones run slow. Every pipeline starts the same way.\n    <\/p>\n\n    <div class=\"tb-psteps\">\n      <div class=\"tb-pstep\">\n        <span class=\"tb-pstep-badge\">Week 1<\/span>\n        <h3 class=\"tb-pstep-h\">Source connection &amp; schema discovery<\/h3>\n        <p class=\"tb-pstep-p\">We connect to your source systems\u2014SAP, Salesforce, PostgreSQL, APIs\u2014and extract their schemas. We identify primary keys, foreign keys, update patterns, and data types. We test extraction logic on a subset of tables to validate connectivity, permissions, and performance. This isn&#8217;t full ingestion. It&#8217;s proof that the pipeline can run.<\/p>\n        <p class=\"tb-pstep-d\"><strong>Deliverable:<\/strong> Connection documentation and sample data extracts from each source.<\/p>\n      <\/div>\n\n      <div class=\"tb-pstep\">\n        <span class=\"tb-pstep-badge\">Week 2-3<\/span>\n        <h3 class=\"tb-pstep-h\">Bronze layer build &amp; incremental loading<\/h3>\n        <p class=\"tb-pstep-p\">We build ingestion pipelines that land raw data in your data lake or warehouse. We implement incremental loading where possible (using change data capture, watermarks, or timestamps) to avoid full-table scans. We add logging, error handling, and retry logic. Every table gets its own pipeline. Every pipeline runs on a schedule.<\/p>\n        <p class=\"tb-pstep-d\"><strong>Deliverable:<\/strong> Automated Bronze pipelines with monitoring and alerting.<\/p>\n      <\/div>\n\n      <div class=\"tb-pstep\">\n        <span class=\"tb-pstep-badge\">Week 4-5<\/span>\n        <h3 class=\"tb-pstep-h\">Silver\/Gold transformation &amp; data quality<\/h3>\n        <p class=\"tb-pstep-p\">We transform raw data into clean, joined, aggregated tables. We apply business logic\u2014currency conversions, date calculations, category mappings. We add data quality checks (null rates, duplicate detection, schema drift alerts). We version every transformation so changes are traceable. This is the layer analysts and dashboards query.<\/p>\n        <p class=\"tb-pstep-d\"><strong>Deliverable:<\/strong> Transformation pipelines with data quality tests and lineage tracking.<\/p>\n      <\/div>\n\n      <div class=\"tb-pstep\">\n        <span class=\"tb-pstep-badge\">Ongoing<\/span>\n        <h3 class=\"tb-pstep-h\">Testing, deployment &amp; handoff<\/h3>\n        <p class=\"tb-pstep-p\">We write unit tests for transformation logic and integration tests for end-to-end data flow. We deploy pipelines through CI\/CD (dev \u2192 test \u2192 prod) with approval gates. We document dependencies, schedules, and failure scenarios. At the end, we run a technical handoff session with your team to transfer ownership.<\/p>\n        <p class=\"tb-pstep-d\"><strong>Deliverable:<\/strong> CI\/CD setup, test suite, runbooks, and handoff documentation.<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============================================================\n       ENTREGABLES COMO TARJETAS CON GRID Y BADGES\n       ============================================================ -->\n  <section class=\"tb-sec\" id=\"deliverables\">\n    <p class=\"tb-lead-label\">Detailed deliverables<\/p>\n    <h2 class=\"tb-h3\">What you actually receive<\/h2>\n    <p class=\"tb-lede tb-lede-narrow\">\n      These are production pipelines, not proof-of-concept scripts. They run daily, handle\n      failures, and log every operation. Your team can maintain them without us.\n    <\/p>\n\n    <div class=\"tb-deliv-grid\">\n      <div class=\"tb-deliv-card\">\n        <span class=\"tb-deliv-badge\">1<\/span>\n        <h3 class=\"tb-deliv-h\">Bronze ingestion pipelines<\/h3>\n        <p class=\"tb-deliv-p\">Automated extract jobs that pull data from source systems and land it in your data lake or warehouse. Each pipeline includes incremental loading logic (where supported), error handling, retry policies, and logging. Pipelines are parameterized so you can re-run specific date ranges or tables without changing code.<\/p>\n      <\/div>\n\n      <div class=\"tb-deliv-card\">\n        <span class=\"tb-deliv-badge\">2<\/span>\n        <h3 class=\"tb-deliv-h\">Transformation DAGs (Silver\/Gold)<\/h3>\n        <p class=\"tb-deliv-p\">SQL or Python-based transformation logic organized into directed acyclic graphs (DAGs). Each transformation declares its dependencies\u2014which tables it reads, which it writes, in what order. This makes it possible to backfill data, debug failures, and understand lineage without reading all the code.<\/p>\n      <\/div>\n\n      <div class=\"tb-deliv-card\">\n        <span class=\"tb-deliv-badge\">3<\/span>\n        <h3 class=\"tb-deliv-h\">Data quality tests<\/h3>\n        <p class=\"tb-deliv-p\">Automated checks that run after every pipeline execution: null rate thresholds, uniqueness constraints, referential integrity, schema validation, row count deltas. Failures trigger alerts (email, Slack, PagerDuty) with enough context to diagnose the issue without SSH-ing into a server.<\/p>\n      <\/div>\n\n      <div class=\"tb-deliv-card\">\n        <span class=\"tb-deliv-badge\">4<\/span>\n        <h3 class=\"tb-deliv-h\">CI\/CD deployment setup<\/h3>\n        <p class=\"tb-deliv-p\">GitHub Actions, Azure DevOps, or GitLab CI pipelines that test and deploy code across environments (dev, test, prod). Changes go through pull requests, automated tests, and approval gates. Rollbacks are one command. This prevents &#8220;works on my machine&#8221; production incidents.<\/p>\n      <\/div>\n\n      <div class=\"tb-deliv-card\">\n        <span class=\"tb-deliv-badge\">5<\/span>\n        <h3 class=\"tb-deliv-h\">Runbooks &amp; troubleshooting guides<\/h3>\n        <p class=\"tb-deliv-p\">Step-by-step instructions for common failure scenarios: source system down, schema change, row count spike, query timeout. Each runbook includes where to check logs, which metrics to inspect, and how to escalate. This lets junior engineers handle incidents without escalating to seniors.<\/p>\n      <\/div>\n\n      <div class=\"tb-deliv-card\">\n        <span class=\"tb-deliv-badge\">6<\/span>\n        <h3 class=\"tb-deliv-h\">Monitoring dashboards<\/h3>\n        <p class=\"tb-deliv-p\">Grafana, Databricks, or platform-native dashboards showing pipeline execution times, row counts processed, data freshness lag, error rates, and cost per table. You can see at a glance which pipelines are slow, which failed overnight, and whether data is up-to-date.<\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============================================================\n       CASO RELACIONADO (tarjeta destacada)\n       ============================================================ -->\n  <section class=\"tb-sec tb-relcase\" id=\"case\">\n    <div class=\"tb-case-box\">\n      <p class=\"tb-lead-label\">Related case<\/p>\n      <h2 class=\"tb-h3\">Education: Marketing attribution &amp; ROI modeling<\/h2>\n      <p class=\"tb-lede\">\n        An education client needed to unify data from Facebook Ads, Google Ads, Google Analytics,\n        TikTok Ads, Spotify Ads, SEMRush, and Google Search Console with financial data to calculate\n        true marketing ROI and model conversion funnels across landing pages. We built incremental\n        ingestion pipelines for 7 marketing sources, transformation logic that matched campaign spend\n        to revenue, and KPI tables that tracked cost-per-acquisition and lifetime value by channel\u2014\n        letting them reallocate \u20ac180k\/year from low-ROI platforms to high-converting campaigns.\n      <\/p>\n      <a class=\"tb-srow-go\" href=\"\/case-education\/\">\n        Read the full case <i aria-hidden=\"true\">\u2192<\/i>\n      <\/a>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============================================================\n       PRICING (tratamiento sobrio, sin cajas ni naranja)\n       ============================================================ -->\n  <section class=\"tb-sec\" id=\"pricing\">\n    <p class=\"tb-lead-label\">Pricing &amp; what affects it<\/p>\n    <h2 class=\"tb-h3\">Transparent pricing context<\/h2>\n\n    <div class=\"tb-price-simple\">\n      <p class=\"tb-price-label\">Base engineering project<\/p>\n      <p class=\"tb-price-figure\">\u20ac40\/hour<\/p>\n      <p class=\"tb-price-detail\">Estimated 160\u2013240 hours \u00b7 4\u20136 weeks<\/p>\n    <\/div>\n\n    <div class=\"tb-price-cols\">\n      <div class=\"tb-price-col\">\n        <h3>What makes the price go up<\/h3>\n        <ul class=\"tb-slist\">\n          <li><strong>Number of tables\/endpoints:<\/strong> Ingesting 100 tables takes longer than 10. Each requires extraction logic, schema mapping, and incremental loading patterns.<\/li>\n          <li><strong>Complex transformations:<\/strong> Simple joins and aggregations are fast. Multi-step logic with business rules, date arithmetic, and currency conversions require more testing.<\/li>\n          <li><strong>Real-time or near-real-time requirements:<\/strong> Batch pipelines (daily, hourly) are simpler than streaming (CDC, message queues, event-driven triggers).<\/li>\n          <li><strong>Legacy source systems:<\/strong> Extracting from old on-prem databases with no APIs, undocumented schemas, or restricted network access requires custom connectors and VPN setup.<\/li>\n        <\/ul>\n      <\/div>\n\n      <div class=\"tb-price-col\">\n        <h3>What keeps the price down<\/h3>\n        <ul class=\"tb-slist\">\n          <li><strong>Standard connectors available:<\/strong> If your sources have Fivetran, Airbyte, or native cloud connectors, we use those instead of writing custom extraction code.<\/li>\n          <li><strong>Simple aggregations:<\/strong> Sum, count, average, group by\u2014if that&#8217;s all you need, transformation logic is straightforward.<\/li>\n          <li><strong>Batch-only workloads:<\/strong> Daily overnight pipelines are simpler and cheaper than hourly or real-time ingestion.<\/li>\n          <li><strong>Existing architecture in place:<\/strong> If you already have Bronze\/Silver\/Gold layers defined, we&#8217;re implementing, not designing from scratch.<\/li>\n        <\/ul>\n      <\/div>\n    <\/div>\n\n    <div class=\"tb-price-simple\">\n      <p class=\"tb-price-label\">Team reinforcement<\/p>\n      <p class=\"tb-price-figure\">\u20ac37.5\/hour<\/p>\n      <p class=\"tb-price-detail\">Embedding an engineer in your team for 6+ months<\/p>\n    <\/div>\n\n    <div class=\"tb-price-simple\">\n      <p class=\"tb-price-label\">Pipeline maintenance<\/p>\n      <p class=\"tb-price-figure\">\u20ac40\/hour<\/p>\n      <p class=\"tb-price-detail\">Ongoing monitoring, bug fixes, and schema change handling<\/p>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============================================================\n       FAQ CON ACORDEON (como en \/services\/)\n       ============================================================ -->\n  <section class=\"tb-sec tb-faq\" id=\"faq\">\n    <p class=\"tb-lead-label\">Questions<\/p>\n    <h2 class=\"tb-h3\">FAQ: Data engineering<\/h2>\n\n    <div class=\"tb-faq-list\">\n      <details class=\"tb-q\">\n        <summary>Do I need an engineer if I already have Fivetran or Airbyte?<\/summary>\n        <div class=\"tb-a\">\n          <p>Not for basic ingestion. If your sources have pre-built connectors and you only need raw data in your warehouse, tools like Fivetran handle it. Engineering becomes necessary when you need custom transformations, business logic, data quality checks, or orchestration across multiple systems that connectors don&#8217;t cover.<\/p>\n        <\/div>\n      <\/details>\n\n      <details class=\"tb-q\">\n        <summary>What&#8217;s the difference between ELT and ETL?<\/summary>\n        <div class=\"tb-a\">\n          <p><strong>ETL<\/strong> (Extract, Transform, Load) transforms data before loading it into the warehouse\u2014common with older on-prem systems where storage was expensive. <strong>ELT<\/strong> (Extract, Load, Transform) loads raw data first, then transforms it in the warehouse using SQL. Modern cloud platforms (Snowflake, Databricks, BigQuery) are optimized for ELT because compute is cheaper than moving data around.<\/p>\n        <\/div>\n      <\/details>\n\n      <details class=\"tb-q\">\n        <summary>How do you handle schema changes in source systems?<\/summary>\n        <div class=\"tb-a\">\n          <p>We use schema evolution patterns: adding new columns doesn&#8217;t break existing pipelines, removing columns triggers alerts, renaming columns is handled with mapping layers. We version transformations so changes are traceable. For critical tables, we add schema validation tests that fail if unexpected changes appear, forcing a review before data propagates downstream.<\/p>\n        <\/div>\n      <\/details>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============================================================\n       CTA\n       ============================================================ -->\n  <section class=\"tb-scta\">\n    <div class=\"tb-scta-in\">\n      <div class=\"tb-scta-l\">\n        <p class=\"tb-eyebrow-2\">Next steps<\/p>\n        <h2 class=\"tb-scta-h\">Engineering work comes after architecture.<\/h2>\n        <p class=\"tb-scta-d\">\n          If you know where your data needs to go and what it needs to look like, this is\n          where you build the pipelines that get it there.\n        <\/p>\n      <\/div>\n      <div class=\"tb-scta-r\">\n        <a class=\"tb-cta-btn\" href=\"\/contact\/\">\n          Start a conversation\n          <svg width=\"15\" height=\"11\" viewBox=\"0 0 15 11\" fill=\"none\" aria-hidden=\"true\">\n            <path d=\"M1 5.5h12M9 1l4 4.5L9 10\" stroke=\"#fff\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><\/path>\n          <\/svg>\n        <\/a>\n        <p class=\"tb-scta-alt\">\n          Or <a href=\"\/services\/\">back to all services<\/a>\n        <\/p>\n      <\/div>\n    <\/div>\n  <\/section>\n\n<\/div>\n\n\n<!-- =====================================================================\n     DATOS ESTRUCTURADOS \u00b7 FAQPage\n     ===================================================================== -->\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [\n    {\n      \"@type\": \"Question\",\n      \"name\": \"Do I need an engineer if I already have Fivetran or Airbyte?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"Not for basic ingestion. If your sources have pre-built connectors and you only need raw data in your warehouse, tools like Fivetran handle it. Engineering becomes necessary when you need custom transformations, business logic, data quality checks, or orchestration across multiple systems that connectors don't cover.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"What's the difference between ELT and ETL?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"ETL (Extract, Transform, Load) transforms data before loading it into the warehouse\u2014common with older on-prem systems where storage was expensive. ELT (Extract, Load, Transform) loads raw data first, then transforms it in the warehouse using SQL. Modern cloud platforms (Snowflake, Databricks, BigQuery) are optimized for ELT because compute is cheaper than moving data around.\"\n      }\n    },\n    {\n      \"@type\": \"Question\",\n      \"name\": \"How do you handle schema changes in source systems?\",\n      \"acceptedAnswer\": {\n        \"@type\": \"Answer\",\n        \"text\": \"We use schema evolution patterns: adding new columns doesn't break existing pipelines, removing columns triggers alerts, renaming columns is handled with mapping layers. We version transformations so changes are traceable. For critical tables, we add schema validation tests that fail if unexpected changes appear, forcing a review before data propagates downstream.\"\n      }\n    }\n  ]\n}\n<\/script>\n","protected":false},"excerpt":{"rendered":"<p>Services Work Insights About Contact Data engineering \u00b7 in detail Process, deliverables, pricing and what you&#8217;ll actually build. Somebody has to write the pipelines that move data from source systems to dashboards. This is the work that turns architecture diagrams into running code\u2014tested, monitored, and maintained for the next team. On this page 01 Process &#8230; <a title=\"Ingenier\u00eda de datos\" class=\"read-more\" href=\"https:\/\/tobolist.com\/es\/data-engineering\/\" aria-label=\"Leer m\u00e1s sobre Data Engineering\">Leer m\u00e1s<\/a><\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-321","page","type-page","status-publish"],"_links":{"self":[{"href":"https:\/\/tobolist.com\/es\/wp-json\/wp\/v2\/pages\/321","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tobolist.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tobolist.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tobolist.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tobolist.com\/es\/wp-json\/wp\/v2\/comments?post=321"}],"version-history":[{"count":10,"href":"https:\/\/tobolist.com\/es\/wp-json\/wp\/v2\/pages\/321\/revisions"}],"predecessor-version":[{"id":467,"href":"https:\/\/tobolist.com\/es\/wp-json\/wp\/v2\/pages\/321\/revisions\/467"}],"wp:attachment":[{"href":"https:\/\/tobolist.com\/es\/wp-json\/wp\/v2\/media?parent=321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}