elt – Arruda – Data Consulting https://modelo6.augustomello.com.br Wed, 25 Sep 2024 12:08:07 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.8.3 https://modelo6.augustomello.com.br/wp-content/uploads/2025/08/cropped-Logo-Arruda-Consulting-2025-Picto-1b-32x32.png elt – Arruda – Data Consulting https://modelo6.augustomello.com.br 32 32 Loop com Apache Hop https://modelo6.augustomello.com.br/loop-com-apache-hop/ https://modelo6.augustomello.com.br/loop-com-apache-hop/#respond Wed, 25 Sep 2024 12:08:07 +0000 https://arrudaconsulting.com.br/?p=5738 Neste post compartilho com vocês duas maneiras de criar Loop utilizando o Apache Hop.

Objetivo:

Criar 2 modelos de loop que percorra uma pasta principal, acesse todas as subpastas dentro dela, e leia todos os arquivos XLSX encontrados em cada subpasta. O loop funcionará independe do número de subpastas que haja na pasta principal.

Neste exemplo eu crie uma pasta chamada Loops, uma subpasta chamada Empresas e dentro desta subpasta criei mais 3 subpastas (Empresa A, Empresa B, Empresa C).

Dentro de cada uma destas subpastas há o arquivo cliente.xls que será lido pelo loop que iremos implementar.

Formato do arquivo excel que será lido

Modelo de Loop 1 — Usando copy rows to result

PASSO 1: Criar uma transform Get subfolder names que irá pegar o nome das subpastas de uma determinada pasta.

Edite a transform e determine no campo Directory qual é o diretório raiz onde você obterá as informações. No nosso exemplo esse é o caminho:

C:\NILSON\CURSO_APACHE_HOP\Loops\Empresas

Após selecionar o diretório clique em !GetSubFoldersDialog… e depois em Preview Rows para visualizar as pastas

As informações listadas serão encaminhadas para um novo pipeline, onde cada linha processada executará uma tarefa específica, criando um loop automático para cada linha da planilha. A próxima transform Copy rows to result será responsável por gerenciar esse processo.

PASSO 2: Criar a transform Copy rows to result e ligar com a transform Get subfolder names e na sequencia editá-la.

Todo o pipeline de dados será passado para essa transform como resultado, permitindo a execução do próximo pipeline.

Execute a pipeline para testar se não erro.

Salvaremos essa pipeline com o nome de loop_2_passo1

PASSO 3: Criar uma nova pipeline incluindo a transform Get rows from result. Ela servirá para pegar as linha de resultado que vieram da pipeline anterior loop_2_passo1.

Edite a transform e defina quais são as informações que será aproveitada da pipeline.

Neste exemplo, utilizaremos o campo folderName, que contém o caminho completo da pasta que desejamos ler. Dentro dessa pasta, pode haver muitos arquivos. Essa informação é obtida ao realizar um preview na transformação Get subfolder names da pipeline loop_2_passo1, que será então passada para a nova pipeline.

Incluir em Fieldname o folderName e em Type como String.

Assim que obtida, essa informação ela será passada para o próximo step.

PASSO 4: Criar uma transform Write to log para acompanhar o processamento que será feito e ligá-la a transform anterior Get rows from result.

Definir no campo Field o campo folderName

PASSO 5: Criar uma transform Get file names e ligar a transform anterior. Essa transform entrará em cada pasta, listará e processará os arquivos contidos nela.

Edite a transform e marque o campo Is filename defined in a field? e em Get filename from field selecione folderName

PASSO 6: Criar uma transform Microsoft Excel Input para receber essas informações.

Edite a transform e em Spread sheet type (engine) marcar que o tipo do arquivo. Neste nosso exemplo os arquivos são xlsx.

1 — Marcar o item Accept filenames from previous transform

2 — Em Transform to read filenames from selecionar Get file names, para indicar que ele recebe o nome do arquivo através do step Get file names

3 — Em Field in the input to use as filename selecionar filename, que foi o nome do campo definido no step Get file names.

Selecione a aba Sheets e inclua o nome da aba do arquivo que será lido. Em Em nosso exemplo o nome da aba do nosso arquivo cliente.xlsx é Plan 1.

Selecione a aba Fields e inclua a estrutura do arquivo excel. Em nosso exemplo temos apenas duas colunas id_cliente e nome_cliente no arquivo cliente.xlsx.

PASSO 7: Criar uma nova transform Write to log para escrever o conteúdo do arquivo no log.

PASSO 8: Criar um workflow para permitir que o pipeline loop_2_passo1 passe informação para o pipeline loop_2_passo2.

Ligar a action Start à action Pipeline

Editar a pipeline e clicar no botão Browser em Pipeline: e selecionar o loop_2_passo1 e clicar em Yes.

PASSO 9: Agora criaremos uma nova pipeline repetindo o procedimento acima para o loop_2_passo2.

Editar a pipeline e clicar no botão Browser em Pipeline: e selecionar o loop_2_passo2 .

Importante marcar o item Execute for every result row para que seja executado em forma de loop executando o conteúdo do arquivo linha a linha. Por fim clique no botão OK e salve o workflow como loop2_exemplo.

PASSO 10: Clique em Executar para executar os dois pipelines e ver o resultado no log. Note pelo log que o processo leu a pasta principal, listou as subpastas e dentro de cada subpasta leu os dados do arquivo cliente.xlsx.

Loop na Empresa A

Loop na Empresa B

Loop na Empresa C

Modelo de Loop 2 — Pipeline Executor

Para esse modelo iremos aproveitar a pipeline loop_2_passo2, iremos salvá-la com um novo nome loop3_exemplo.

PASSO 1: Excluir os steps Get rows from result e Write to log, que não serão necessários.

PASSO 2: Editar a transform Get file names que irá pegar o nome das subpastas de uma determinada pasta e editar

Desabilitar o Is filename defined in a field para que a seja habilitada o Select files, para incluir a variável ${pasta}

Essa variável pasta será preenchida dinamicamente com no nome da pasta que contém o arquivo. O Get file names ficará encarregado de listar o arquivo e passar para a próxima transform.

PASSO 3: Criar uma nova pipeline e criar a transform Get subfolder names para pegar o nome da pasta que queremos.

editar a transform e copiar o caminho da pasta principal onde estão subpastas.

PASSO 4: Perceba que neste modelo de loop 2, eu não jogarei o resultado do step anterior em um step Copy rows to result, mas em um pipeline executor.

Criar uma transform Pipeline Executor para pegar o nome da pasta que queremos.

Neste exemplo o resultado irá para um pipeline executor

Para cada linha que for processado na pipeline principal também será executada a pipeline executor, ou seja, o loop será feito até o final do arquivo.

Editar a pipeline executor e clicar em Browser e pesquisar a pipeline loop3_exemplo.hpl

Definir Variable / Parameter name como “pasta” e em Field to use selecionar folderName e clicar em OK. Desta maneira o conteúdo do folderName será passado para a variável pasta.

Salve essa pipeline com o nome loop3Exemplo_pai

Passo 5: Execute o pipeline e acompanhe resultado pelo log.

Conclusão

Mostrei neste tutorial duas maneiras de fazer loop, utilizando o Apache Hop, sendo a última solução a mais performática.

Soluções estas que também se adaptam ao Pentaho.

Muito Obrigado.

Nilson Braga

Gostou deste post? Conecte-se comigo no linkedin

]]> https://modelo6.augustomello.com.br/loop-com-apache-hop/feed/ 0 Treinamento: Python para Engenheiro de dados – 1º dia https://modelo6.augustomello.com.br/treinamento-python-para-engenheiro-de-dados-1o-dia/ https://modelo6.augustomello.com.br/treinamento-python-para-engenheiro-de-dados-1o-dia/#respond Sun, 21 May 2023 18:08:35 +0000 https://arrudaconsulting.com.br/?p=5304 Olá,

Tudo bem contigo?

Nesse sábado, 20/05/2023, tivemos o 1º dia do nosso mais novo treinamento, Python para Engenheiro de dados, aplicado pelo instrutor Leandro Silva.

Neste sábado foram abordados os seguintes temas:

  • Criação da conta na Google Cloud.
  • Utilizamos o IAM para criar as permissões e acessos.
  • Criação de um banco de dados na nuvem, no caso o PostgreSQL.
  • Conectamos no Bando de dados via Dbeaver
  • Instalação do Python e também Vscode
  • Conectamos no Postgres utilizando o Python.
  • Criação da camada raw(bronze) do nosso data lake na Google Cloud utilizando o Python para ingestão dos dados.

Tudo isso no formato 100% Hand-ons, muito prático, sem contar que quando um aluno tinha algum erro, compartilhava a tela e o nosso instrutor e os alunos resolviam o problema, erros que os alunos só iriam ver em seus projetos conseguiram não só ver esses erros mas como resolver também.

Temos a certeza que após esse treinamento nossos alunos estarão muito mais preparados para as oportunidades de Engenheiro de dados.

Sábado que vem temos mais 8 horas de imersão de Python com Google Cloud.

Muito Obrigado a todos os nossos alunos que confiaram mais uma vez no nosso trabalho!!

Até o próximo artigo!!

 

 

]]>
https://modelo6.augustomello.com.br/treinamento-python-para-engenheiro-de-dados-1o-dia/feed/ 0
Como utilizar a função Zip() no Python https://modelo6.augustomello.com.br/como-utilizar-a-funcao-zip-no-python/ https://modelo6.augustomello.com.br/como-utilizar-a-funcao-zip-no-python/#comments Mon, 17 Apr 2023 12:00:37 +0000 https://arrudaconsulting.com.br/?p=5217 O Python é uma linguagem de programação muito versátil e poderosa, com muitas ferramentas úteis para ajudar a simplificar o desenvolvimento de software. Uma dessas ferramentas é a função zip() que permite combinar elementos de duas ou mais listas em uma única lista.

A função zip() é usada para juntar duas ou mais listas em uma única lista de tuplas, onde cada tupla contém um elemento de cada uma das listas fornecidas. A função zip() é muito útil quando precisamos percorrer duas ou mais listas simultaneamente, pois elimina a necessidade de usar loops aninhados.

Sintaxe:

zip(*iterables)

O parâmetro iteráveis é uma sequência de objetos iteráveis (por exemplo, listas, tuplas ou strings) que serão agrupados. O operador * antes do parâmetro iteráveis é usado para descompactar a sequência de objetos iteráveis.

Exemplo de uso:

lista1 = [1, 2, 3]
lista2 = ['a', 'b', 'c']

zipped = zip(lista1, lista2)

for i in zipped:
   print(i)

Resultado:

(1, 'a')
(2, 'b')
(3, 'c')

No exemplo acima, a função zip() é usada para combinar as listas lista1 e lista2 em uma única lista de tuplas. O loop for é então usado para imprimir cada tupla.

Um exemplo prático de uso do zip() seria o cálculo da média de notas de alunos em diferentes disciplinas. Suponha que tenhamos as seguintes listas:

notas_aluno1 = [8, 9, 7]
notas_aluno2 = [6, 7, 5]
notas_aluno3 = [10, 9, 9]
disciplinas = ['Matemática', 'Português', 'Ciências']

Para calcular a média de notas de cada aluno em cada disciplina, podemos usar o zip() da seguinte maneira:

for notas in zip(notas_aluno1, notas_aluno2, notas_aluno3):
    media = sum(notas) / len(notas)
    print(f"A média das notas do aluno é {media}")

O resultado seria:

A média das notas do aluno é 8.0
A média das notas do aluno é 6.0
A média das notas do aluno é 9.33

Neste exemplo, o zip() é usado para combinar as notas de cada aluno em uma única lista de tuplas. Em seguida, é calculada a média de notas de cada aluno usando a função sum() e o número de notas usando a função len().

Em resumo, a função zip() é uma ferramenta útil para simplificar a manipulação de listas em Python, especialmente quando precisamos percorrer várias listas simultaneamente. Combinar várias listas em uma única lista de tuplas usando o zip() pode ajudar a tornar o código mais legível e fácil de entender.

Quer aprender mais…
Então participe da nossa live que será no dia 09/05/2023, para se inscrever só clicar no link abaixo:

Live – Python + GCP

Muito Obrigado e nos vemos na live!!

]]>
https://modelo6.augustomello.com.br/como-utilizar-a-funcao-zip-no-python/feed/ 1
1ª turma do Hopbase Finalizada https://modelo6.augustomello.com.br/1a-turma-do-hopbase-finalizada/ https://modelo6.augustomello.com.br/1a-turma-do-hopbase-finalizada/#respond Sun, 12 Mar 2023 22:10:17 +0000 https://arrudaconsulting.com.br/?p=5162 Olá, tudo bem contigo?

Que treinamento meus amigos que tivemos nesses últimos 2 sábados, uma turma realmente íncrivel.

O Hopbase surgiu com o propósito de poder proporcionar para as empresas criarem suas soluções de B.I sem precisar gastar um centavo com licenças, e aos profissionais que tiverem esse conhecimento conseguem agregar ainda mais valor as empresas e começarem a fazer as suas primeiras consultorias, conquistar os seus primeiros clientes, um conteúdo para os nossos alunos mudarem de patamar mais uma vez com a Arruda Consulting.

Temas abordados:

  • O que é o Hopbase?
  • O que é Business Intelligence.
  • Preparando o ambiente.
  • Criando um projeto e os seus ambientes(DEV,QA,PRD)
  • Conectando o Apache Hop num banco de dados.
  • Tratando os dados com Apache Hop sem utilizar uma linha de código.
  • Integrando dados do Chat GPT no Hop via API.
  • Automatizando a integração do Chat GPT de forma dinâmica.
  • Aprendendo a trabalhar com variaveis e parametros no Hop.
  • Instalação do Hop Server.
  • Integrando o Apache Hop com o Hop Server.
  • Agendando o ETL para executar de forma agendada.
  • Criando um pipeline para carregar as tabelas da Stage em um único ETL.
  • O que é o Metabase?
  • Analisando dados com o Metabase.
  • Qual a importância do Data Discovery e como ele pode impactar os projetos de B.I.
  • Relacionando dados, agrupando e criando métricas no Metabase.
  • Criação de gráficos.
  • Criando o nosso primeiro painel.
  • Criando um Sub-Dashboar e também um Sub-report.
  • Criando uma solução de dados near real-time.

Tudo isso em 2 sábados, 16 horas de conteúdo.

Gostaria muito de agradecer aos mais de 30 alunos que fizeram desse novo treinamento tão íncrivel!!

Muito Obrigado!!

]]>
https://modelo6.augustomello.com.br/1a-turma-do-hopbase-finalizada/feed/ 0
Como Instalar o Hop Server? https://modelo6.augustomello.com.br/como-instalar-o-hop-server/ https://modelo6.augustomello.com.br/como-instalar-o-hop-server/#respond Sat, 11 Mar 2023 10:22:06 +0000 https://arrudaconsulting.com.br/?p=5139 Olá, tudo bem contigo?

Nesse artigo iremos compartilhar contigo como subir o serviço do Hop Server.

Primeiramente iremos abrir o cmd, ir até a pasta aonde o nosso hop está instalado e executar o seguinte comando.

hop-server servidor porta

Nesse exemplo irei subir o Hop Server no meu computador local e irei utilizar  a porta 8081.

 

 

 

 

 

 

 

 

Agora que o nosso serviço do Hop Server iniciou, agora é só abrir o navegador e acessar o endereço localhost:8081.

Irá pedir um usuário e senha, como padrão do Hop, isso pode ser alterado também é cluster para usuário e senha.

E assim que logar é só clicar em show status e irá aparecer a imagem abaixo:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Pronto, Hop-Server iniciado e agora já conseguimos executar nossos pipelines e workflows a partir do nosso Apache Hop Local.

Quer Aprender como Executar o pipeline no Apache Hop e ele executar no teu Hop-Server?

Só clicar no link abaixo:

https://arrudaconsulting.com.br/executando-um-pipeline-no-hop-server-atraves-do-apache-hop/

Muito Obrigado e até o próximo artigo!!

]]>
https://modelo6.augustomello.com.br/como-instalar-o-hop-server/feed/ 0
Como Encriptar suas senhas no Apache Hop https://modelo6.augustomello.com.br/como-encryptar-suas-senhas-no-apache-hop/ https://modelo6.augustomello.com.br/como-encryptar-suas-senhas-no-apache-hop/#respond Sun, 05 Mar 2023 11:19:04 +0000 https://arrudaconsulting.com.br/?p=5130 Olá,

Tudo bem contigo?

Você que já trabalha algum tempo com Pentaho, chegou a testar o Apache Hop?

Se sim, uma das primeiras coisas que testamos é a forma de poder trabalhar com projetos e os seus respectivos ambientes não é mesmo.

Aonde com as mesmas variaveis com um mesmo pipeline num clique executamos o nosso pipeline no ambiente de DEV, e podemos mudar para ambiente de Testes ou de Produção, porém nossas senhas ficariam expostas.

E uma forma de proteger as suas credenciais de bancos de dados é encriptar as nossas senhas.

 

 

 

 

 

 

 

 

Na imagem acima temos uma conexão criada de um banco de dados local que utilizamos em nossos treinamentos.

Agora iremos ver as variáveis que estamos utilizando para um dos nossos ambientes.

 

 

 

 

 

 

 

Nesse caso é um banco local e de treinamento, mas vamos supor que fosse as credenciais da sua empresa, ou do seu cliente quem tiver acesso a esse arquivo, teria as credenciais e poderia acessar o banco de dados, e pensando na governança dos dados isso com certeza poderia ocorrer alguns problemas.

Uma forma muito simples de resolver isso, seria utilizar o hop-encrypt, com apenas uma linha de comando recebemos a nossa mesma senha só que encripitada.

Primeiro iremos abrir o cmd, e ir até a pasta que o seu Apache Hop está instalado e iremos utilizar o seguinte comando.

hop-encrypt -hop -Senha

No nosso caso aqui a nossa senha é 123, então irei utilizar ela ao final do comando.

 

 

 

 

 

 

 

Como podemos ver o Hop retornou a seguinte senha pra gente: Encrypted 2be98afc86aa7f2e4cb79ce10bec3fd89

Então nas variáveis aonde temos a configuração do nosso banco, iremos substituir 123 por essa senha que o hop-encrypt gerou.

 

 

 

 

 

 

 

E para finalizar iremos editar a conexão e clicar em testar para ver se está tudo ok.

 

 

 

 

 

 

 

 

 

 

 

 

Conexão OK.

E é dessa forma que além de trabalharmos com projetos e também com ambientes, também conseguimos proteger as nossas credenciais.

Muito Obrigado e até o próximo artigo!

 

]]>
https://modelo6.augustomello.com.br/como-encryptar-suas-senhas-no-apache-hop/feed/ 0
Google Data Fusion https://modelo6.augustomello.com.br/google-data-fusion/ https://modelo6.augustomello.com.br/google-data-fusion/#respond Fri, 17 Sep 2021 11:23:54 +0000 https://arrudaconsulting.com.br/?p=4358 O que é o Google Data Fusion?

Antes de mais nada Você provavelmente conhece o Big Query, Google Storage, soluções bem utilizadas na Google Cloud Plataform, porém temos um serviço novo chamado Google Data Fusion, a solução de ETL  da Google.

Em outras palavras Google Data Fusion é uma solução Drag-Drop. Onde criamos pipelines de dados escaláveis utilizando muito pouco código, uma ideia parecida ao nosso Pentaho Data Integration. Porém Com a vantagem de ter uma integração nativa com diversos serviços da plataforma.

Segue abaixo uma evidência de um pipeline feito no Data Fusion:

Então Nesse pipeline basicamente estamos lendo alguns dados de clientes depois Fizemos alguns tratamentos e salvamos em uma tabela do Big Query.

Dessa forma após o fluxo ter sido executado já temos os dados na nova tabela no Big Query utilizando muito pouco código.

Além disso possui:

  • Data lakes modernos e mais seguros no Google Cloud
  • Armazenamento de dados ágil com o BigQuery
  • Ambiente de análise unificado
  • Ampla biblioteca de mais de 150 conectores e transformações pré-configurados sem custo adicional
  • Interface visual do tipo “apontar e clicar” que possibilita a implantação de pipelines de dados ETL/ELT sem código
  • Linhagem de dados completa para causa raiz e análise de impacto Além disso Os melhores serviços do Google Cloud integrados nativamente

Ou seja Aprenda tudo sobre Google Cloud e se destaque no Mercado.

Como Aprender?

Essa é uma solução que está dentro do nosso treinamento de Google Cloud. Se você quiser aprender tudo isso na prática e muito mais,  em março teremos o terceiro treinamento ao vivo de Google Cloud.

É Uma verdadeira imersão de engenharia de dados e Google Cloud. As inscrições estão abertas por tempo limitado. para acessar a pagina do evento é só Clicar aqui

Ou Se quiser ir direto para os ingressos Clique aqui

]]>
https://modelo6.augustomello.com.br/google-data-fusion/feed/ 0