{"id":801,"date":"2020-03-10T15:51:12","date_gmt":"2020-03-10T18:51:12","guid":{"rendered":"http:\/\/kondado.com.br\/blog\/?p=801"},"modified":"2022-01-14T21:10:23","modified_gmt":"2022-01-15T00:10:23","slug":"etl-vs-elt-e-modelos","status":"publish","type":"post","link":"https:\/\/kondado.com.br\/blog\/blog\/2020\/03\/10\/etl-vs-elt-e-modelos\/","title":{"rendered":"ETL vs ELT e Modelos"},"content":{"rendered":"\n<p>A maneira mais r\u00e1pida de fadar ao fracasso os seus esfor\u00e7os de <em>data science, business intelligence e analytics<\/em> \u00e9 utilizar diretamente os dados que est\u00e3o em produ\u00e7\u00e3o para analisar informa\u00e7\u00f5es.<\/p>\n\n\n\n<p>As principais causas disso s\u00e3o:<\/p>\n\n\n\n<ul><li><strong>Formato:<\/strong> Os dados em produ\u00e7\u00e3o possuem um formato voltado para as opera\u00e7\u00f5es do produto, principalmente INSERT e UPDATE, que n\u00e3o \u00e9 pr\u00f3prio para as consultas do tipo SELECT de analytics.<\/li><li><strong>Criticidade<\/strong>: As consultas de analytics envolvem opera\u00e7\u00f5es de agrega\u00e7\u00e3o e v\u00e1rios cruzamentos entre tabelas (JOIN) que, com muita frequ\u00eancia, s\u00e3o pesadas e afetam o desempenho do produto, podendo at\u00e9 &#8220;derrubar&#8221; o servi\u00e7o para os usu\u00e1rios, causando uma p\u00e9ssima experi\u00eancia do cliente e desespero dos SREs e DevOps<\/li><li><strong>An\u00e1lises rasas<\/strong>: voc\u00ea estar\u00e1 consultando sempre apenas uma fonte de dados, ou <a href=\"https:\/\/kondado.com.br\/blog\/dados-cruzados-x-emparelhados-entenda-a-diferenca\/\">se enganando com emparelhamento ao inv\u00e9s de cruzamento de dados<\/a> de outros servi\u00e7os utilizados (como <a href=\"https:\/\/kondado.com.br\/blog\/wiki\/adicionando-o-conector-do-zendesk-na-plataforma-da-kondado\/\" data-type=\"URL\" data-id=\"https:\/\/kondado.com.br\/blog\/wiki\/adicionando-o-conector-do-zendesk-na-plataforma-da-kondado\/\">Zendesk<\/a>, <a href=\"https:\/\/kondado.com.br\/blog\/wiki\/como-adicionar-o-conector-do-google-adwords-na-kondado\/\" data-type=\"URL\" data-id=\"https:\/\/kondado.com.br\/blog\/wiki\/como-adicionar-o-conector-do-google-adwords-na-kondado\/\">Adwords<\/a> ou <a href=\"https:\/\/kondado.com.br\/blog\/wiki\/adicionando-o-conector-da-pagar-me-na-plataforma-da-kondado\/\" data-type=\"URL\" data-id=\"https:\/\/kondado.com.br\/blog\/wiki\/adicionando-o-conector-da-pagar-me-na-plataforma-da-kondado\/\">Pagar.me<\/a>)<\/li><\/ul>\n\n\n\n<div data-slot=\"dwc\" data-param-slot-name=\"ma-dwc-2\"><\/div>\n\n\n\n<h3>ETL: Extract, Tranform, Load<\/h3>\n\n\n\n<p>O conceito de ETL surgiu como uma forma de eliminar essas falhas. A sigla, em ingl\u00eas, significa <em>Extract<\/em>, <em>Transform<\/em>, <em>Load<\/em>. Quer dizer:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-style-large\"><p>Uma opera\u00e7\u00e3o de ETL extrai os dados da origem (a fonte de produ\u00e7\u00e3o), aplica alguma transforma\u00e7\u00e3o (formata os dados para consultas) e carrega em uma outra base de dados (destino), apartada da produ\u00e7\u00e3o, que ser\u00e1 utilizada apenas para analytics<\/p><\/blockquote>\n\n\n\n<p>O ETL consegue sanar as principais causas de fracasso dos seus esfor\u00e7os de analytics, pois j\u00e1 deixa os dados em um formato definido para consultas, disponibiliza uma outra base de dados para consultas de analytics e v\u00e1rias fontes de dados podem ser integradas no destino final, abrindo caminho para poderosos cruzamentos de dados.<\/p>\n\n\n\n<p>Entretanto, ele traz outros problemas, principalmente porque eleva bastante a complexidade das opera\u00e7\u00f5es de dados, sendo necess\u00e1rio certo esfor\u00e7o de desenvolvimento para colocar em pr\u00e1tica essa integra\u00e7\u00e3o de dados das fontes para o destino de dados.<\/p>\n\n\n\n<p>Uma vez operacional, os fluxos de ETL tornam-se tamb\u00e9m complexos de serem gerenciados, sendo necess\u00e1rio mais esfor\u00e7os de pessoas especializadas caso seja necess\u00e1rio alguma altera\u00e7\u00e3o.<\/p>\n\n\n\n<p>Por exemplo, vamos supor que no seu produto, h\u00e1 uma tabela de cadastro dos usu\u00e1rios e o seu objetivo \u00e9 saber o n\u00famero de usu\u00e1rios atuais do produto. Um ETL simples ir\u00e1 criar no destino uma tabela com apenas uma vari\u00e1vel, que \u00e9 o n\u00famero de usu\u00e1rios atual e atualizar esse valor de acordo com alguma frequ\u00eancia.<\/p>\n\n\n\n<p>Passado certo tempo, voc\u00ea v\u00ea a necessidade de n\u00e3o apenas contar os usu\u00e1rios, mas entender a evolu\u00e7\u00e3o deles ao longo do tempo. Ou seja: a parte de <em>transforma\u00e7\u00e3o<\/em> do seu ETL, que antes apenas contava os registros da fonte, agora precisa contar os registros agrupados de acordo com a data de cria\u00e7\u00e3o. Para fazer essa altera\u00e7\u00e3o, o desenvolvedor da integra\u00e7\u00e3o precisar\u00e1 alterar o c\u00f3digo do ETL, o que pode levar certo tempo para ser feito.<\/p>\n\n\n\n<p>Os projetos de dados bem sucedidos s\u00e3o bastante din\u00e2micos e precisam sempre de mais ou menos informa\u00e7\u00f5es, fazendo com que esse fluxo de ETL precise ser alterado diversas vezes e sobrecarregando o desenvolvedor de integra\u00e7\u00e3o.<\/p>\n\n\n\n<p>Esse problema \u00e9 frequente por causa do <em>skillset<\/em> diferente de cada participante de um projeto de dados. O desenvolvedor de integra\u00e7\u00e3o \u00e9 um programador que domina a linguagem de programa\u00e7\u00e3o que usou para criar o ETL e o consumidor de dados \u00e9 um analista\/cientista de dados que domina SQL ou ferramentas de visualiza\u00e7\u00e3o e \u00e9 mais voltado para entender as necessidades do neg\u00f3cio e explorar dados, tendo grande necessidade de lidar com TODO o universo de dados dispon\u00edvel.<\/p>\n\n\n\n<h3>ELT: Extract, Load <em>THEN<\/em> Transform<\/h3>\n\n\n\n<p>Para evitar esse vai e volta, surgiu o conceito do <em>E<strong>L<\/strong>T<\/em>, que altera um pouco o ETL, fazendo primeiro a carga dos dados no destino e depois a transforma\u00e7\u00e3o. Isso quer dizer que, enquanto o ETL coloca apenas dados j\u00e1 tratados no destino (e precisa de um desenvolvedor para alterar o processo), o ELT replica os <strong>dados brutos<\/strong> da fonte para o destino e deixa nas m\u00e3os dos analistas e cientistas de dados para que apliquem as transforma\u00e7\u00f5es que acharem necess\u00e1rias, conforme forem vendo as necessidade do neg\u00f3cio e dos seus algoritmos.<\/p>\n\n\n\n<p>Obviamente, o ELT requer mais recursos do destino de dados, j\u00e1 que agora \u00e9 l\u00e1 que s\u00e3o realizadas as transforma\u00e7\u00f5es de dados. Entretanto, hoje o poder dos destinos de dados dispon\u00edveis torna o ELT uma op\u00e7\u00e3o mais simples e \u00e1gil ao ETL e a escolha perfeita para as \u00e1reas de dados mais din\u00e2micas.<\/p>\n\n\n\n<h3>Como a Kondado lida com isso?<\/h3>\n\n\n\n<p>A plataforma da Kondado foi pensada para tornar os processos de dados simples e intuitivos, por isso optamos por implementar o <strong>ELT<\/strong> em escala.<\/p>\n\n\n\n<p>O primeiro passo para isso foi simplificar a parte de leitura de dados. Antes voc\u00ea precisava deslocar algum engenheiro do seu time de produto ou mesmo contratar um desenvolvedor apenas para integra\u00e7\u00e3o de dados. Com a Kondado, qualquer pessoa pode criar uma integra\u00e7\u00e3o, sem precisar digitar uma linha de c\u00f3digo:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img src=\"https:\/\/lh4.googleusercontent.com\/3n-a17_12FFbcaigP6PbrOqVWn7wxyHVLzpV7ZH2qGA8HdV5xVZu1iiuVVSTlxcb7TJq4JFQ02b04MOkeT7dAjE8YpRLQ8WmsA-H2UUELXvI5_T1H0ydNaSPdLYtaqru22opNr3DWM0KYA\" alt=\"\"\/><figcaption>Escolher objeto<\/figcaption><\/figure><\/div>\n\n\n\n<p>Uma vez no destino, os dados podem ser transformados com o uso da nossa funcionalidade de <strong>Modelos<\/strong>:<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter\"><img loading=\"lazy\" width=\"1024\" height=\"529\" src=\"https:\/\/kondado.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-2-1024x529.png\" alt=\"\" class=\"wp-image-807\" srcset=\"https:\/\/kondado.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-2-1024x529.png 1024w, https:\/\/kondado.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-2-300x155.png 300w, https:\/\/kondado.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-2-768x397.png 768w, https:\/\/kondado.com.br\/blog\/wp-content\/uploads\/2020\/03\/image-2.png 1297w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Modelos<\/figcaption><\/figure><\/div>\n\n\n\n<p>Os modelos s\u00e3o acionados por integra\u00e7\u00f5es (ou outros modelos) e materializam as transforma\u00e7\u00f5es em tabelas no destino de dados (garantindo a performance da consulta final) e fazendo com que, sempre que novos dados chegarem ao seu destino, eles j\u00e1 passem pela sua transforma\u00e7\u00e3o. <\/p>\n\n\n\n<p>Qualquer cientista ou analista de dados pode criar um modelo, porque eles s\u00e3o definidos <em><strong>VIA SQL<\/strong><\/em>, de acordo com a sintaxe do seu destino de dados. <a href=\"https:\/\/kondado.com.br\/blog\/wiki\/criando-modelos-na-plataforma-kondado\/\" data-type=\"URL\" data-id=\"https:\/\/kondado.com.br\/blog\/wiki\/criando-modelos-na-plataforma-kondado\/\">Nesse tutorial<\/a> explicamos como criar modelos na plataforma Kondado.<\/p>\n\n\n\n<p>Al\u00e9m de deixar bem orquestrado o seu fluxo de dados, tamb\u00e9m facilitamos a sua organiza\u00e7\u00e3o, pois os <a href=\"https:\/\/kondado.com.br\/blog\/wiki\/metadados-na-kondado\/\" data-type=\"URL\" data-id=\"https:\/\/kondado.com.br\/blog\/wiki\/metadados-na-kondado\/\">metadados de integra\u00e7\u00f5es e modelos<\/a> (como nomes de tabelas, SQLs e nomes de colunas) s\u00e3o facilmente consult\u00e1veis na nossa plataforma, facilitando a rastreabilidade dos seus dados.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A maneira mais r\u00e1pida de fadar ao fracasso os seus esfor\u00e7os de data science, business intelligence e analytics \u00e9 utilizar diretamente os dados que est\u00e3o em produ\u00e7\u00e3o para analisar informa\u00e7\u00f5es. As principais causas disso s\u00e3o: Formato: Os dados em produ\u00e7\u00e3o possuem um formato voltado para as opera\u00e7\u00f5es do produto, principalmente INSERT e UPDATE, que n\u00e3o [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":813,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[30,2],"tags":[],"_links":{"self":[{"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/posts\/801"}],"collection":[{"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/comments?post=801"}],"version-history":[{"count":14,"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/posts\/801\/revisions"}],"predecessor-version":[{"id":1706,"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/posts\/801\/revisions\/1706"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/media\/813"}],"wp:attachment":[{"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/media?parent=801"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/categories?post=801"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kondado.com.br\/blog\/wp-json\/wp\/v2\/tags?post=801"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}