<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Agustín José Mazzeo</title>
    <description>The latest articles on DEV Community by Agustín José Mazzeo (@agusmazzeo).</description>
    <link>https://dev.to/agusmazzeo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3957202%2F14ae3bd2-fbda-49b9-b238-f6f8c3e3d1e8.jpg</url>
      <title>DEV Community: Agustín José Mazzeo</title>
      <link>https://dev.to/agusmazzeo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/agusmazzeo"/>
    <language>en</language>
    <item>
      <title>What does a Data Engineer do in Production (No Hype)</title>
      <dc:creator>Agustín José Mazzeo</dc:creator>
      <pubDate>Fri, 29 May 2026 02:10:46 +0000</pubDate>
      <link>https://dev.to/agusmazzeo/what-does-a-data-engineer-do-in-production-no-hype-3khj</link>
      <guid>https://dev.to/agusmazzeo/what-does-a-data-engineer-do-in-production-no-hype-3khj</guid>
      <description>&lt;h1&gt;
  
  
  What Does a Data Engineer Do in Production (No Hype)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;If you learned Data Engineering with notebooks and clean datasets, this article is for you. In production there are no clean datasets: there are systems that change, pipelines that fail, and data that has to be correct &lt;strong&gt;every single day&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;A Data Engineer in production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Builds and maintains reliable pipelines &lt;/li&gt;
&lt;li&gt;Ensures data quality (doesn’t “wait” for good data) &lt;/li&gt;
&lt;li&gt;Designs for consumption (BI, ML, APIs) &lt;/li&gt;
&lt;li&gt;Operates: monitors, debugs, and reprocesses &lt;/li&gt;
&lt;li&gt;Makes real trade-off decisions: cost, performance, risk &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Problem
&lt;/h2&gt;

&lt;p&gt;In theory:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Extract data, transform it, and load it into a data warehouse”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In production:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data arrives incomplete or late &lt;/li&gt;
&lt;li&gt;APIs fail or change schemas &lt;/li&gt;
&lt;li&gt;“OK” jobs can still produce incorrect data &lt;/li&gt;
&lt;li&gt;Dashboards depend on you &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Result: the job is not just building, it’s &lt;strong&gt;operating living data systems&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explanation
&lt;/h2&gt;

&lt;p&gt;A Data Engineer builds and operates systems that turn chaotic data into reliable data for the business.&lt;/p&gt;

&lt;p&gt;It’s not just ETL. &lt;/p&gt;

&lt;p&gt;It’s:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pipeline design &lt;/li&gt;
&lt;li&gt;data quality enforcement &lt;/li&gt;
&lt;li&gt;continuous operations &lt;/li&gt;
&lt;li&gt;architectural decision-making &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you understand the problem, the work breaks down into these layers:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Ingestion (unstable sources)
&lt;/h3&gt;

&lt;p&gt;What it involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrating APIs, databases, events &lt;/li&gt;
&lt;li&gt;Handling errors and retries &lt;/li&gt;
&lt;li&gt;Detecting schema changes &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;
&lt;span class="n"&gt;expected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="err"&gt;   &lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;

&lt;span class="err"&gt;       &lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Defensive design, not perfect data&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Transformation
&lt;/h3&gt;

&lt;p&gt;What it involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cleaning and deduplication &lt;/li&gt;
&lt;li&gt;Business logic &lt;/li&gt;
&lt;li&gt;Performance &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;

&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

&lt;span class="err"&gt;        &lt;/span&gt; &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;updated_at&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;raw_users&lt;/span&gt;

&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Key decision: &lt;strong&gt;correctness vs performance&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Modeling
&lt;/h3&gt;

&lt;p&gt;What it involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Designing for BI or ML &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dashboard → aggregated table &lt;/li&gt;
&lt;li&gt;ML → detailed events &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Depends on consumption&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Consumption
&lt;/h3&gt;

&lt;p&gt;Consumers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BI &lt;/li&gt;
&lt;li&gt;ML &lt;/li&gt;
&lt;li&gt;APIs &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Changing schema breaks things → you need contracts&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Operation (the most important part)
&lt;/h3&gt;

&lt;p&gt;What it involves:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alerts &lt;/li&gt;
&lt;li&gt;Debugging &lt;/li&gt;
&lt;li&gt;Reprocessing &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 This is where the real work happens&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Example
&lt;/h2&gt;

&lt;p&gt;E-commerce pipeline:&lt;/p&gt;

&lt;h3&gt;
  
  
  Source
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;
&lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fetch_api&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/orders&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;events&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;read_stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user_events&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Raw
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;raw_orders&lt;/span&gt;

&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;

&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;api_orders&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Curated
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;order_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;total_amount&lt;/span&gt;

&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;raw_orders&lt;/span&gt;

&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;order_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Serving
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;

&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;revenue&lt;/span&gt;

&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;curated_orders&lt;/span&gt;

&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Consumption
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dashboard &lt;/li&gt;
&lt;li&gt;ML &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 The pipeline ends when someone actually uses the data&lt;/p&gt;

&lt;h2&gt;
  
  
  Common Mistakes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Assuming data is correct &lt;/li&gt;
&lt;li&gt;Not storing raw data &lt;/li&gt;
&lt;li&gt;Not validating outputs &lt;/li&gt;
&lt;li&gt;Breaking contracts &lt;/li&gt;
&lt;li&gt;Not handling failures &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Can I reprocess data? &lt;/li&gt;
&lt;li&gt;Do I store raw data? &lt;/li&gt;
&lt;li&gt;Do I have validations? &lt;/li&gt;
&lt;li&gt;Is it idempotent? &lt;/li&gt;
&lt;li&gt;Do I know who consumes it? &lt;/li&gt;
&lt;li&gt;Do I have alerts? &lt;/li&gt;
&lt;li&gt;Are costs controlled? &lt;/li&gt;
&lt;li&gt;Are logs useful? &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Being a Data Engineer in production is not writing SQL.&lt;/p&gt;

&lt;p&gt;It is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;building resilient systems &lt;/li&gt;
&lt;li&gt;anticipating failures &lt;/li&gt;
&lt;li&gt;balancing trade-offs &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Your real value is making sure data always works &lt;/p&gt;

&lt;h2&gt;
  
  
  CTA
&lt;/h2&gt;

&lt;p&gt;If you’re learning Data Engineering: start with real pipelines, not theory.&lt;/p&gt;

&lt;p&gt;👉 Next step: understand Batch vs Streaming in production&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>etl</category>
      <category>analitycsengineering</category>
    </item>
    <item>
      <title>Qué hace un Data Engineer en producción (sin humo)</title>
      <dc:creator>Agustín José Mazzeo</dc:creator>
      <pubDate>Thu, 28 May 2026 19:17:32 +0000</pubDate>
      <link>https://dev.to/agusmazzeo/que-hace-un-data-engineer-en-produccion-sin-humo-5gbg</link>
      <guid>https://dev.to/agusmazzeo/que-hace-un-data-engineer-en-produccion-sin-humo-5gbg</guid>
      <description>&lt;h1&gt;
  
  
  Qué hace un Data Engineer en producción (sin humo)
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;Si aprendiste Data Engineering con notebooks y datasets limpios, este artículo es para vos. En producción no hay datasets prolijos: hay sistemas que cambian, pipelines que fallan y datos que tienen que estar bien &lt;strong&gt;todos los días&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  TL;DR
&lt;/h2&gt;

&lt;p&gt;Un Data Engineer en producción:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Construye y mantiene pipelines confiables&lt;/li&gt;
&lt;li&gt;Asegura calidad de datos (no “espera” que llegue bien)&lt;/li&gt;
&lt;li&gt;Diseña pensando en consumo (BI, ML, APIs)&lt;/li&gt;
&lt;li&gt;Opera: monitorea, debuggea y reprocesa&lt;/li&gt;
&lt;li&gt;Toma decisiones con trade-offs reales: costo, performance, riesgo&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Problema
&lt;/h2&gt;

&lt;p&gt;En teoría:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Extraer datos, transformarlos y cargarlos en un data warehouse”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;En producción:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Los datos llegan incompletos o tarde&lt;/li&gt;
&lt;li&gt;Las APIs fallan o cambian el esquema&lt;/li&gt;
&lt;li&gt;Jobs “OK” pueden producir datos incorrectos&lt;/li&gt;
&lt;li&gt;Dashboards dependen de vos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Resultado: el trabajo no es solo construir, es &lt;strong&gt;operar sistemas de datos vivos&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Explicación
&lt;/h2&gt;

&lt;p&gt;Un Data Engineer construye y opera sistemas que convierten datos caóticos en datos confiables para el negocio.&lt;/p&gt;

&lt;p&gt;No es solo ETL. &lt;/p&gt;

&lt;p&gt;Es:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;diseño de pipelines&lt;/li&gt;
&lt;li&gt;aseguramiento de calidad&lt;/li&gt;
&lt;li&gt;operación continua&lt;/li&gt;
&lt;li&gt;decisiones de arquitectura&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Una vez que entendés el problema, el trabajo se divide en estas capas:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Ingesta (fuentes inestables)
&lt;/h3&gt;

&lt;p&gt;Qué implica:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integrar APIs, bases, eventos&lt;/li&gt;
&lt;li&gt;Manejar errores y reintentos&lt;/li&gt;
&lt;li&gt;Detectar cambios de esquema&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;expected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user_id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;amount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;col&lt;/span&gt; &lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;columns&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;col&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Diseño defensivo, no datos perfectos&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Transformación
&lt;/h3&gt;

&lt;p&gt;Qué implica:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Limpieza y deduplicación&lt;/li&gt;
&lt;li&gt;Lógica de negocio&lt;/li&gt;
&lt;li&gt;Performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ejemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
         &lt;span class="n"&gt;ROW_NUMBER&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="n"&gt;OVER&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;PARTITION&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt; &lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;updated_at&lt;/span&gt; &lt;span class="k"&gt;DESC&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;raw_users&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;rn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;👉 Decisión clave: &lt;strong&gt;correctitud vs performance&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Modelado
&lt;/h3&gt;

&lt;p&gt;Qué implica:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Diseñar para BI o ML&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ejemplo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dashboard → tabla agregada&lt;/li&gt;
&lt;li&gt;ML → eventos detallados&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Depende del consumo&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Consumo
&lt;/h3&gt;

&lt;p&gt;Consumidores:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BI&lt;/li&gt;
&lt;li&gt;ML&lt;/li&gt;
&lt;li&gt;APIs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Cambiar schema rompe cosas → necesitas contratos&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Operación (lo más importante)
&lt;/h3&gt;

&lt;p&gt;Qué implica:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Alertas&lt;/li&gt;
&lt;li&gt;Debug&lt;/li&gt;
&lt;li&gt;Reprocesos&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Aquí está el trabajo real&lt;/p&gt;

&lt;h2&gt;
  
  
  Ejemplo práctico
&lt;/h2&gt;

&lt;p&gt;Pipeline de e-commerce:&lt;/p&gt;

&lt;h3&gt;
  
  
  Source
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;fetch_api&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/orders&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;events&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;read_stream&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;user_events&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Raw
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;raw_orders&lt;/span&gt;
&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;api_orders&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Curated
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
  &lt;span class="n"&gt;order_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;total_amount&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;raw_orders&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;order_id&lt;/span&gt; &lt;span class="k"&gt;IS&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Serving
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt;
  &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="k"&gt;SUM&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total_amount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;revenue&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;curated_orders&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;order_date&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Consumo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Dashboard&lt;/li&gt;
&lt;li&gt;ML&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 El pipeline termina cuando alguien usa los datos&lt;/p&gt;

&lt;h2&gt;
  
  
  Errores comunes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Asumir datos correctos&lt;/li&gt;
&lt;li&gt;No guardar raw&lt;/li&gt;
&lt;li&gt;No validar resultados&lt;/li&gt;
&lt;li&gt;Romper contratos&lt;/li&gt;
&lt;li&gt;No manejar fallas&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Checklist
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;¿Puedo reprocesar datos?&lt;/li&gt;
&lt;li&gt;¿Guardo raw?&lt;/li&gt;
&lt;li&gt;¿Tengo validaciones?&lt;/li&gt;
&lt;li&gt;¿Es idempotente?&lt;/li&gt;
&lt;li&gt;¿Sé quién consume?&lt;/li&gt;
&lt;li&gt;¿Tengo alertas?&lt;/li&gt;
&lt;li&gt;¿Costo controlado?&lt;/li&gt;
&lt;li&gt;¿Logs útiles?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusión
&lt;/h2&gt;

&lt;p&gt;Ser Data Engineer en producción no es escribir SQL.&lt;/p&gt;

&lt;p&gt;Es:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;construir sistemas resilientes&lt;/li&gt;
&lt;li&gt;anticipar fallas&lt;/li&gt;
&lt;li&gt;balancear trade-offs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;👉 Tu valor real es que los datos funcionen siempre&lt;/p&gt;

&lt;h2&gt;
  
  
  CTA
&lt;/h2&gt;

&lt;p&gt;Si estás aprendiendo Data Engineering: empezá por pipelines reales, no por teoría.&lt;/p&gt;

&lt;p&gt;👉 Siguiente paso: entender Batch vs Streaming en producción&lt;/p&gt;

</description>
      <category>dataengineering</category>
      <category>etl</category>
      <category>analyticsengineering</category>
    </item>
  </channel>
</rss>
