top of page
Posts do fórum
Jhonatan Benevenuto
04 de abr. de 2023
In Big Data
Atualmente, com o alto crescimento de produção de dados brutos, muito se começou a falar sobre: organização, conceitos e segurança de dados. Pilares esses que estão diretamente ligados a arquitetura escolhida para um projeto de dados. Nesse artigo iremos abordar duas arquiteturas que são comumente discutidas por engenheiros e arquitetos de dados, que é o Data Warehouse e o Data Lake. Data Warehouse Data Warehouse (ou armazém de dados, em português) é um sistema de gerenciamento de dados que consiste em um grande repositório de informações consolidadas e integradas de várias fontes de dados diferentes.
Geralmente ele é mais adequado quando a empresa precisa de acesso a dados integrados, organizados e estruturados. Ele é projetado para suportar análises de negócios, permitindo que os usuários façam consultas complexas e obtenham respostas rápidas e precisas. Características: 1. O Schema deve ser definido antes do processo de armazenamento de dados. 2. Geralmente os dados de origem devem ser organizados e estruturados. 3. Atualizações dos dados em Bath, podendo ser definidos uma vez ao dia de forma integral ou varias vezes ao dia de forma incremental. 4. Aplica se o conceito de ETL (Extrair, Transformar e Carregar). Data Lake Já o Data Lake é uma opção mais adequada para empresas que precisam de acesso a dados brutos, não estruturados e em grande volume, que não podem ser facilmente processados em um Data Warehouse. Ele é projetado para armazenar dados em sua forma bruta, sem a necessidade de transformação ou organização prévia. Isso permite que os usuários acessem uma ampla variedade de dados.
Características: 1. Os dados são gravados sem ser tratados. 2. Repositório centralizado que permite armazenar todos os dados estruturados e não estruturados em qualquer escala, permitindo que várias pessoas consigam acessar esses dados. 3. Facilidade para capturar dado, e velocidade evitando perca de dados. 4. Usa o conceito de ELT ( Extrair, carregar e tratar).
Data Lake e Data Warehouse Levando em consideração das diversas arquiteturas que temos ambos os sistemas podem ser usados em conjunto. Sempre buscando o melhor dos dois mundos. Atualmente um modelo de arquitetura utilizado é a leitura dos dados de origem sendo gravado em um Data Lake, e posteriormente a modelagem de um Data Warehouse, com isso ganhamos velocidade, confiabilidade e maior flexibilidade na leitura dos dados e organização, controle e apoio a tomada de decisão com os dados.
Jamais se esqueça, o nosso objetivo é atender a demanda sempre da melhor forma, resolvendo o problema. Não se apegue a conceitos, mas sim utilize os conceitos da melhor forma. Utilizando uma analogia: “Se a empresa lhe dar limões, faça a melhor limonada possível.”
Abraço. Jhonatan Benevenuto Engenheiro de Dados
0
0
475
Jhonatan Benevenuto
03 de abr. de 2023
In Big Data
Fala meus amigos, espero que todos estejam bem. Todos sabemos do avanço considerável do ambiente cloud no mundo dos dados. Com o passar dos anos o ambiente cloud veio se popularizando cada vez mais pela facilidade da escalabilidade, segurança entre outros benefícios. Mas existe um contraponto nessa ascenção, o custo. Atualmente projetos que possuem um Budget menor, acabam sofrendo com o alto custo de algumas plataformas cloud, e por mais que esse custo vem diminuindo ano após ano, ele ainda é considerado grande para algumas empresas. Dessa forma cabe a nós engenheiros de dados procurarmos soluções, para viabilizar aos nossos clientes a experiencia de ter um projeto com armazenamento de dados em cloud, com um custo menor mantendo sempre a segurança e confiabilidade dos dados. Seguindo essa proposta de desenvolvimento, venho apresentar uma solução de ingestão de dados em batch com Pentaho Data Integration, que é uma ferramenta on premisse e open source, ingerindo dados na plataforma no Google Cloud. Nos próximos passos mostrarei como configurar ambas as ferramentas.
Passo 1 : Criar uma conta no Google Cloud Plataforma
Acessar o link https://cloud.google.com/ e criar um usuário e senha, lembrando que a Google te oferece de maneira gratuita $300,00 para ser utilizado como armazenamento do seu processo durante 90 dias, lembrando que quando esses créditos acabarem, o valor de armazenamento utilizado será cobrado. Passo 2 : Configurando o IAM e Administrator e gerando Chave de acesso Nesse passo é necessário dar as permissões necessárias de acesso, então criaremos um “Novo projeto”, onde tudo que for feito será associado a esse projeto, e após isso criar uma “Conta de serviço”, essa criação é simples, onde você insere um nome que deseja, que já estará vinculada ao seu novo projeto, depois escolha o tipo de papel desejado, onde recomendo para teste utilizar o tipo “Proprietário”. Após ser criado a conta de serviço, temos um ponto importante, que é a criação da Chave Json, essa chave é a comunicação do Pentaho com o GCP, é através dela que é feita a leitura dos dados. Sendo assim vamos seguir os seguintes passos, ir em “Gerenciar Chaves”, depois “Adicionar Chave”, escolher o tipo “JSON” e pronto a chave está criada. Passo 3 – Configurando o Google Cloud Storage No nosso exemplo, iremos utilizar o Cloud Storage, pois o nosso foco é a diminuição dos custos de armazenamento em cloud. Sendo assim criaremos um “Bucket” e a região que escolhemos foi a “Us – Região dos Estados Unidos com o Tipo Local: Multi-region”. Após essa configuração, podemos criar as pastas para o armazenamento, criaremos o uma única pasta com o nome de “data_lake”, nela armazenaremos os dados de ingestão da camada Raw, que também é conhecida como camada bronze. Passo 4 – Conectando o Pentaho ao Google Cloud
Para essa etapa iremos criar uma variável de ambiente no próprio Windows, o nome da variável deve ser GOOGLE_APPLICATION_CREDENTIALS e o valor da variável será o caminho onde a Chave Json que cadastramos no passo 2, estará salva. Após criarmos a variável, iniciaremos o “Pentaho Data Integration” e escolheremos o Input dos dados, isso é, a origem dos dados que será um “Table Input” e em seguida utilizaremos o output dos dados que será o “Text File Ouput”, já que iremos gravar os arquivos CSV no nosso “Storage”.
Selecionaremos uma tabela do banco de dados que queremos como origem no “Table Input”, e no “Text File Ouput” iremos configurar como destino o Google Cloud e a pasta “data_lake” que configuramos no “Bucket do Storage”, um ponto importante é após selecionarmos Google cloud Storage devemos inserir manualmente o nome do Bucket (etapa 5 da imagem abaixo). Após fazermos essa configuração, o nosso processo de ingestão esta configurado. É só startar o pipeline e pronto a tabela do nosso banco de dados de origem estará inserida como um arquivo CSV no Cloud Storage da Google, na nossa camada de ingestão Raw/Bronze. Espero que com esse artigo possa ajudar muitos outros engenheiros de dados a “Baratear”, alguns projetos de Google Cloud. Abraço. Jhonatan Benevenuto
Engenheiro de Dados
1
0
80
Jhonatan Benevenuto
31 de mar. de 2023
In Linguagem de programação
Fala meus amigos, espero que todos estejam bem. Hoje vim falar um pouco sobre o comando MERGE em SQL, um comando que é de grande valia para nós de engenharia de dados e utilizadores da linguagem SQL. Ele nos possibilita ganharmos horas de processamento, controle e desenvolvimento em um pipeline de dados. O que é o comando Merge?
O comando MERGE é um comando SQL que combina as operações de INSERT, UPDATE e DELETE em uma única instrução. Ele permite que você atualize uma tabela de destino com dados de uma tabela de origem, realizando ações diferentes com base nas condições especificadas, além de nos oferecer a cláusula OUTPUT, que nos oferece visibilidade sobre o resultado do que foi feito durante o comando MERGE.
O comando MERGE é suportado em vários bancos de dados, incluindo Microsoft SQL Server, Oracle, MySQL e PostgreSQL.
Por se tratar de um comando SQL, ele pode ser utilizado de diversas formas, desde que a ferramenta utilizada para executar o processamento dos dados nos permita essa possibilidade. Sendo mais claro, algumas ferramentas da própria Microsoft como o Integration Service, Azure Data Factory ou ferramentas que possuem execução de script SQL como Databricks e Pentaho Data Integration, podem fazer usos da solução de MERGE via script SQL. Em qual etapa de um pipeline ele é utilizado? O MERGE é utilizado quando é necessário inserir, atualizar ou excluir linhas de uma tabela destino condicionalmente. Em outras palavras, se uma linha existir na tabela de destino, atualize os valores de uma ou várias colunas. Se não existir, insira uma nova linha e se existir no destino, mas não na origem excluir a linha do destino. O objetivo do comando é sincronizar dados de duas tabelas, garantindo que toda operação feita na tabela de origem seja refletida na tabela de destino, após a execução do comando MERGE. Qual o benefício ele traz em um processo de ingestão de dados?
O comando MERGE pode trazer diversos pontos positivos para um pipeline de dados, como por exemplo: Eficiência: Pode-se combinar várias operações de INSERT, UPDATE e DELETE em uma única instrução SQL, o que pode ser mais eficiente do que executar essas operações separadamente, com isso o ganho de performance em pipeline de dados, é enorme. Confiabilidade: Ele garante que os dados na tabela de destino estejam sempre atualizados e sincronizados com os dados de origem. Isso auxilia no processo de Data Quality, garantindo que os dados do destino são os mesmos que dá origem. Flexibilidade: Pode ser usado para combinar dados de diferentes fontes e aplicar regras de negócios personalizadas com base em necessidades específicas. Manutenção: Por se tratar de um comando em linguagem SQL, ele pode simplificar o código e o processo de sincronização dos dados, facilitando a manutenção e o suporte ao pipeline de dados ao longo do tempo. Controle: O comando MERGE nos oferece a clausula OUTPUT que é uma visão dos resultados do que o comando MERGE executa. Através dessa clausula é possível criarmos tabela de controle, e sabermos a quantidade de dados que foram, ALTERADOS, INSERIDOS ou DELETADOS na origem. Após algumas explicações, quero demonstrar como utilizar esse comando tão poderoso. Bom, durante uma atividade do meu dia-a-dia surgiu a necessidade do desenvolvimento de um pipeline de ingestão, onde eu precisaria de velocidade no processamento desses dados e um controle, onde seria necessário uma tabela de auditoria, que eu pudesse ter a informação de quantos dados foram inseridos, alterados e deletados na tabela de destino, e qual foi a quantidade de dados final de cada tabela executada. A ferramenta que utilizei foi o Pentaho Data Integration, que é Open Source e possui integração com a linguagem SQL, sendo assim foi utilizado o step Script SQL dentro de uma transformação. No exemplo é lido dados da camada transient para a camada raw, é importante deixar dito que ambas as camadas estão no mesmo database e são separados apenas por owners diferentes.
ETAPA 1 - CRIANDO UMA TABELA TEMPORÁRIA ETAPA 2 - DECLARANDO AS VÁRIAVEIS QUE VOU USAR NO OUTPUT ETAPA 3 - CLAUSULA MERGE E SUAS CONDIÇÕES ETAPA 4 - RESULTADO DO MERGE ETAPA 5 - SETANDO AS VARIAVEIS E CONTANTDO ETAPA 6 - INSERINDO OS DADOS NA TABELA DE CONTROLE ETAPA 7 - EXCLUINDO A TABELA TEMPORÁRIA Detalhando as etapas: 1- Criação da tabela temporária , onde ela será utilizada para gravar os dados resultantes do Output. 2- Declaração das variáveis que serão utilizadas para a contagem de dados que o comando Merge manuseou. 3- A instrução do clausula Merge e suas respectivas condições para executar os comandos, Insert, Update e Delete. 4- Saída da clausula Merge, nesse momento é feito a leitura da ação que foi executada e inserida na tabela temporária #LOG_TEMP, na coluna MergeAction. 5- Setando as variáveis e inserindo valor a elas. Nessa etapa é feito uma contagem em cada linha resultante da tabela #LOG_TEMP. Além de ser feito uma contagem geral na tabela destino, para saber quantos dados a tabela possui após a execução da clausula Merge. 6- Feito um Insert em uma tabela de controle, passa que futuramente seja possível uma auditoria desse comando, possibilitando saber quantos dados foram inserido, deletados ou alterados pela clausula Merge. 7- Exclusão da tabela temporária, para que na próxima execução possa ser criado novamente a mesma tabela. Espero, que esse material possa ajudar muita gente em nossa comunidade. Forte abraço a todos, e conte comigo. Jhonatan Benevenuto Engenheiro de dados
1
0
1k
Jhonatan Benevenuto
Mais ações
bottom of page