ApacheHop – Arruda – Data Consulting https://modelo6.augustomello.com.br Mon, 31 Mar 2025 16:51:38 +0000 pt-BR hourly 1 https://wordpress.org/?v=6.9 https://modelo6.augustomello.com.br/wp-content/uploads/2025/08/cropped-Logo-Arruda-Consulting-2025-Picto-1b-32x32.png ApacheHop – Arruda – Data Consulting https://modelo6.augustomello.com.br 32 32 Como tratar valores nulos no Apache Hop? https://modelo6.augustomello.com.br/como-tratar-valores-nulos-no-apache-hop/ https://modelo6.augustomello.com.br/como-tratar-valores-nulos-no-apache-hop/#respond Mon, 31 Mar 2025 16:51:38 +0000 https://arrudaconsulting.com.br/?p=5932 Olá, sempre que falamos de ETL, independente da ferramenta um dos tratamentos mais comuns são os valores nulos, normalmente temos duas abordagens nesse caso:

  • Tratar os dados por coluna.
  • Tratar os dados por tipo de dados.

Quando tratamos os dados por coluna, no nosso ETL informamos o valor de cada coluna que iremos substituir, caso tenha algum valor nulo, se semana que vem a área de negócio adiciona duas colunas a mais na fonte de dados, somos obrigados a adicionar essas duas colunas no nosso fluxo.

Já quando trabalhamos com tipos de dados para valores nulos, a vantagem que não tem muitos tipos de dados, e se é adicionado essas duas colunas, o nosso fluxo vai estar preparado para receber essas novas informações e aplicar o tratamento de forma correta.

Vamos ver isso na prática.

Começamos com um Data Grid.


Temos duas colunas, uma do tipo de dados Int e a outra com o tipo de dados String, então iremos utilizar o Step: “If Null”

Começamos pela opção de fazer pelas colunas, escolhendo cada coluna e qual o valor que irá substituir os valores nulos.


E agora iremos fazer pelo tipo de dados.


 

Como neste exemplo estou utilizando duas colunas, não muda muito mas imagina que fosse 30, 60 colunas, já mudaria algo, quase sempre vamos ter menos tipos de dados do que colunas, então trabalhando com tipo de dados ganhamos uma certa produtividade.

Agora iremos fazer o seguinte teste, ao incluir uma coluna Status do tipo Integer, como o nosso null estamos trabalhando com tipo de dados, meu processo já estará preparao para aplicar o tratamento mesmo assim.


E é dessa forma que trabalhamos com valores nulos dentro do Apache Hop.
Obs: O Step sort rows foi utilizado só para ordenar o campo cod de forma crescente, somente por isso.
E essa é uma das vantagens de se trabalhar com ferramentas de ETL como Apache Hop, Pentaho e entre outras.
Ao mesmo tempo que vamos desenvolvendo, vamos testando cada etapa que adicionamos no fluxo e também vamos documentando, pois de acordo com os steps que contém no fluxo já conseguimos ter uma idéia do que está sendo feito neste ETL.
Bom até o próximo artigo.
Muito Obrigado.
]]>
https://modelo6.augustomello.com.br/como-tratar-valores-nulos-no-apache-hop/feed/ 0
Evite Surpresas no DW: Use o Data Validator do Apache Hop https://modelo6.augustomello.com.br/data-validator-apache-hop/ https://modelo6.augustomello.com.br/data-validator-apache-hop/#respond Sun, 23 Mar 2025 13:03:37 +0000 https://arrudaconsulting.com.br/?p=5876 Olá,

O Apache Hop é uma excelente solução para implementar um Data Warehouse ou um Data Lake, seja em um ambiente On-Prem ou na Cloud, e uma etapa importante nessa etapa é a validação dos dados.

E é justamente esste tema que iremos abordar nesse artigo.

Você já ouviu falar do Step: Data Validator?

Próprio nome já diz, é um step aonde conseguimos criar algumas validações, ou condições se o fluxo irá seguir adiante ou não.

Imagina que a sua principal coluna está com alguns dados nulos, o que é melhor carregar esses dados errado mesmo? ou receber algum email ou alerta com os dados que precisa tratar, os dados que estiverem corretos, serão carregados normalmente.

A validação dos dados é uma etapa muito importante em qualquer projeto na área de dados.

Não basta apenas disponibilizar os dados, a informação precisa estar verificada e confiável também.

Para este exemplo, iremos utilizar duas colunas:


Ao adicionar o Step Data Validator, iremos clicar em “New Validation”, ao soliticar o nome dessa verificação iremos colocar: cod_null.

Iremos desabilitar a opção “Null allowed”, ou seja essa coluna cod, não pode receber dados nulos


Ao executar o nosso pipeline, verificamos que a validação funcionou, como temos um registro nulo na coluna cod, o pipeline deu erro, e não seguiu adiante.


Mas imagina que numa carga de 90 mil registros, um registro apenas não passou nessa validação, não iremos carregar todos esses registros que estão corretos, por conta de um registro?
Não parece algo muito inteligente a se fazer, mas ai que entra o Error Handling.
Aonde todos os registros com erro serão encaminhados para o Error Handling.
Então agora utilizamos dois step Dummy, para separar os dados, o que passaram na validação e os que não passaram.


E ao executar o nosso pipeline, temos a seguinte situação.
Registros que passaram pela validação: 2.
Registros que reprovaram na validação: 1.


O Step error nós poderíamos configurar para enviar um e-mail ou alerta para a área responsável corrigir o dado direto no sistema de origem. Já o Step pass, permitiria que o dado seguisse adiante no fluxo de dados.

Esse foi apenas um exemplo simples do poder do Data Validator. Com ele, é possível criar pipelines mais seguros, confiáveis e inteligentes.

Quer aprender outros Steps do Apache Hop?

Então veja a nossa aula com 2 horas de conteúdo de Apache Hop.

Link Live

Muito obrigado e até o próximo artigo.

Rafael Arruda.

]]>
https://modelo6.augustomello.com.br/data-validator-apache-hop/feed/ 0
O DeepSeek talvez você conheça? Mas e sua API? https://modelo6.augustomello.com.br/o-deepseek-talvez-voce-conheca-mas-e-sua-api/ https://modelo6.augustomello.com.br/o-deepseek-talvez-voce-conheca-mas-e-sua-api/#respond Tue, 28 Jan 2025 08:48:45 +0000 https://arrudaconsulting.com.br/?p=5759 Nesses últimos dias, A DeepSeek uma Start-up Chinesa virou o centro dos debates na área de T.I com o seu assistente de IA utrapassou o Chat GPT como o aplicativo mais bem avaliado na App Store dos Estados Unidos,  creio que a maioria já criou a sua conta no DeepSeek ou se logou com a conta do gmail e começou a fazer algumas perguntas para testar essa IA “made china” porém assim como fizemos quando saiu o Chat GPT, nós testamos a API e é isso que queremos mostrar nesse artigo.

Basta acessar o site e começar a testar a IA.


Neste exemplo perguntamos o que seria um DW e para que serve, e temos a explicação.

Agora vamos entender como funciona a API, e como podemos ter a mesma informação, porém via API, igual já fazem com o ChatGPT.

Primeiro de tudo, é importante ler a documentação para entender como a api funciona e tentar conectar ela com o Postman ou outra IDE, para entender como ela funciona.

Your First API Call | DeepSeek API Docs

Basicamente, após criar a sua conta, precisamos criar uma API_KEY, e já temos o comando curl que a propria documentação já gera, sendo assim, basta importar esse código, e já iremos poder testar a requisição.

curl https://api.deepseek.com/chat/completions \
-H “Content-Type: application/json” \
-H “Authorization: Bearer <DeepSeek API Key>” \
-d ‘{
“model”: “deepseek-chat”,
“messages”: [
{“role”: “system”, “content”: “You are a helpful assistant.”},
{“role”: “user”, “content”: “Hello!”}
],
“stream”: false
}’

Uma vez criada a API_Key na sua conta do DeepSeek, iremos importar esse script Curl no Postman, recomendo criar uma pasta para cada api que venha a trabalhar, facilita a organização dentro da plataforma.

Uma boa prática, é trabalhar com Variáveis, sendo assim evita informar exatamente as credenciais na requisição.

Basta informar o valor da api_key que foi criada e mudar o tipo da variável como “Secret”.


Uma vez a variável criada, agora iremos informar para utilizarmos da maneira correta:

basta utilizar o valor: {{deepseek_key}}.

E o Authorization ficaria assim, Bearer {{deepseek_key}}.


Agora que já temos o Header pronto, iremos atualizar o body com as perguntas que queremos fazer para ver o retorno da API, que deverá o mesmo se fizermos essa mesma pergunta no Chat.


Request pronta agora é testar…


API funcionando!!!!

Agora que já conhecemos e entendemos como a API funciona podemos implementar essa lógica em diversas ferramentas como Apache Hop, Pentaho, Python ou qualquer outra.

Veja como ficou este mesmo exemplo no Apache Hop.


Dessa forma poderiamos fazer qualquer tipo de integração seja pra gravar esses dados em alguma planilha, banco de dados, utilizar essa resposta para enviar por Whats App por exemplo, as possibilidades são infinitas.

Pronto, agora é testar!!!!

Caso queira aprender a criar uma Solução de BI 100% Open Source, utilizando Apache Hop para implementar um DW do zero, conheça o nosso treinamento Hopbase.

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

Rafael Arruda

]]>
https://modelo6.augustomello.com.br/o-deepseek-talvez-voce-conheca-mas-e-sua-api/feed/ 0
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 Criando colunas condicionais no Apache Hop https://modelo6.augustomello.com.br/criando-colunas-condicionais-no-apache-hop/ https://modelo6.augustomello.com.br/criando-colunas-condicionais-no-apache-hop/#comments Tue, 24 Sep 2024 09:43:26 +0000 https://arrudaconsulting.com.br/?p=5729 É muito comum a gente criar colunas condicionais no nosso dia a dia, nem sempre teremos a informação já pronta da forma que precisamos.

Para quem trabalha com banco de dados deve estar mais acostumado a fazer esta tarefa utilizando If ou Case When, a lógica é exatamente  a mesma.

Neste Artigo irei mostrar como fazer isso de duas formas:

  • Simples.
  • E um pouco mais complexa.

Para este exemplo iremos ter duas colunas: Status e Categorias.

Começando pela simples iremos utilizar o Value Mapper para isso, basicamente é informar o valor origem e o valor Destino.


Nesse caso se a 3ª coluna: Target field name estive em branco, isso quer dizer que iremos substituir o valor na mesma coluna, como o tipo de dados é diferente, ou seja estamos lendo dados do tipo Inteiro e gerando uma coluna com dados textos, somos obrigado a criar uma nova coluna, pois daria erro de conversão do tipo de dados.

Quando é o mesmo tipo de dados não tem problema em utilizar a mesma coluna.


Simples não, essa é a forma fácil.

Agora vamos supor que a nossa coluna que iremos criar temos que combinar uma condição entre a coluna status e também a coluna categoria, então para isso o Valeu Mapper já não nos atende, iremos utilizar o Step: Java Script.

Pode parecer um pouco mais complexo mas também neste caso temos mais liberdade para criar da forma que preferir.

Iremos utilizar o seguinte script:

//Script here

var stat;

if(status == 1 && categoria == “Cliente” )

{
stat = “Ativo”;
}
else if (status== 0 && categoria == “Cliente”)

{
stat = “Inativo”;
}
else {

stat = null;
}

  • Se o status = 1 e categoria = Cliente  irá retornar o valor Ativo.
  • Se o status = 0 e categoria = Cliente irá retornar o valor Inativo.
  • Caso contrário nulo.


Vamos ver se irá funcionar?


E dessa forma a gente pode criar colunas utilizando condicionais no Apache Hop.
Quer aprender outros tratamentos de Apache Hop, veja a nossa aula com 2 horas de conteúdo:
Muito Obrigado e até o próximo artigo.
Time Arruda Consulting.
]]>
https://modelo6.augustomello.com.br/criando-colunas-condicionais-no-apache-hop/feed/ 2
Recuperando dados da Receita Federal com Apache Hop https://modelo6.augustomello.com.br/recuperando-dados-da-receita-federal-com-apache-hop/ https://modelo6.augustomello.com.br/recuperando-dados-da-receita-federal-com-apache-hop/#respond Fri, 30 Aug 2024 15:19:57 +0000 https://arrudaconsulting.com.br/?p=5701

Recentemente, explorei o uso do Apache Hop, uma poderosa ferramenta de ETL (Extração, Transformação e Carga) que facilita a automação e gestão de processos complexos de integração de dados.

Neste post, quero compartilhar um pouco sobre como o Apache Hop pode transformar seu processo de integração de dados, especialmente quando se trata de automatizar tarefas que exigem precisão e eficiência, como a extração de dados de fontes externas, por exemplo, APIs.

No exemplo fiz para um único CNPJ, mas daria também para ler os cnpjs de uma base SQL e iterar sobre eles.

PASSO 1: Criar uma transform Data Grid (ideal para criar conjuntos de dados estáticos para testes)

PASSO 2:  Clique duas vezes para editar o Data Grid e na aba Meta incluir uma variável endereco.  Na aba  Data incluir a url da receita federal e um cnpj de consulta: http://receitaws.com.br/v1/cnpj/60316817000103

Documentação da API:  https://developers.receitaws.com.br/#/operations/queryCNPJFree

Passo 3: Incluir uma transform Json Input e conectar a transform Data Grid na transform Json Input.

Passo 4: Clique 2 vezes para abrir a transform Json Input e marque a caixa source is frompara dizer a ele que a origem dos dados vem de uma transform anterior.

Em select Field selecione a variável endereco.

Em read source…, marca a caixa, indicando que o json será obtido da internet.

Passo 5: Na aba Fields incluir os campos que você quer capturar, presumindo que já olhou a documentação e conhece a  estrutura do json.

Passo 6: Clique em Executar Pipeline ou Preview e veja os dados do cnpj capturado.

Durante a apresentação, demonstrei como o Apache Hop pode ser utilizado para recuperar dados diretamente da Receita Federal, exemplificando o uso de uma API pública de consulta de CNPJ. A facilidade com que o Apache Hop permite criar pipelines de dados, desde a definição de um simples conjunto de dados estáticos para testes, até a conexão e manipulação de dados JSON vindos de uma API, é algo que pode acelerar significativamente o desenvolvimento de soluções de integração.

A utilização de transformações como o Data Grid, que cria conjuntos de dados estáticos para testes, e o Json Input, que lê e processa dados JSON diretamente da web, exemplifica o quão versátil e eficiente o Apache Hop é para tarefas de ETL. Com poucos cliques, é possível estruturar e transformar dados em informações valiosas para qualquer tipo de análise ou integração.

O Apache Hop se destaca não apenas pela sua flexibilidade, mas também pela facilidade de uso, permitindo que tanto iniciantes quanto profissionais experientes possam configurar pipelines complexos de forma intuitiva. Se você está lidando com grandes volumes de dados ou precisa integrar várias fontes de dados em um fluxo único, o Apache Hop é uma ferramenta que merece sua atenção.

Este é apenas um exemplo do poder e da versatilidade do Apache Hop. Em um cenário onde a qualidade e a integridade dos dados são fundamentais, investir em uma solução robusta como essa pode fazer toda a diferença para o sucesso do seu projeto.

Muito Obrigado.

Nilson Braga

Gostou deste post? Conecte-se comigo no linkedin

]]>
https://modelo6.augustomello.com.br/recuperando-dados-da-receita-federal-com-apache-hop/feed/ 0
Como Conectar SQL Server no Hop? https://modelo6.augustomello.com.br/como-conectar-sql-server-no-hop/ https://modelo6.augustomello.com.br/como-conectar-sql-server-no-hop/#respond Fri, 31 May 2024 08:50:21 +0000 https://arrudaconsulting.com.br/?p=5652 Olá, Desde o Pentaho o banco de dados que dava um pouco mais de trabalho para conectar era o SQL Server, e isso se manteve no Hop.

Portanto, a ideia deste artigo é disponibilizar um tutorial de como fazer esta integração do SQL Server com Apache Hop, este artigo foi feito por um dos nossos alunos, Vasco Gabriel, que é analista de dados na Angola.

Vamos começar:

  • Baixe o driver JDBC no site da Microsoft. O link é este aqui.
  • Descompacte os arquivos e cole na pasta lib do Apache Hop,


Adição do autenticador do SQL Server na pasta libwt – Apache Hop.

Por último, vá ao diretório de instalação do Java na sua máquina e em cada pasta encontrada, você precisará adicionar os seguintes arquivos.


Adição dos autenticadores do SQL Server na pasta bin.

Estes arquivos são os autenticadores que o Apache Hop precisará para conectar ao banco. Como disse, cole ambos nas pastas citadas do seu
diretório escolhido na instalação.

Para validar se a configuração deu certo e se o Apache Hop consegue se conectar com o SQL Server, faça o seguinte teste.

Simplificando se não conseguir

Copia a dll da drive que fica na pasta da drive baixada conforme mostra a imagem abaixo:

Cola aqui a dll nesta pasta

Agora vamos tentar criar a conexão do SQL Server no Apache Hop.

 

Nessa etapa você irá preencher os dados de conexão, igual faria no SSMS ou no Dbeaver.

Configuração de conexão do SQL Server com Apache Hop.

Passe as configurações do seu banco de dados e clique em Test e veja se a ferramenta irá se conectar com o SQL Server. Clique em OK e pronto

 

Quando baixares o dbaver deves garantir o que SQL Server esteja
conectado com dbaver. Um dos erros que podes se deparares é a conexão com o Porta SQL.

Por muitas razões a porta 1433 tem sido bloqueada, então você pode alter o nome da porta ou liberares. Aí tu podes voltares nos passos anterior
descrito no tutorial.

Espero que este artigo tenha te ajudado.

Caso a tua dúvida é mais como fazer os teus ETL com Hop, sugiro assistir este vídeo aqui, que contém 2 horas de conteúdo de Apache Hop:

Muito Obrigado e até o próximo artigo.

Rafael Arruda

]]>
https://modelo6.augustomello.com.br/como-conectar-sql-server-no-hop/feed/ 0
Depoimentos de Alunos – Hopbase https://modelo6.augustomello.com.br/depoimento-hopbase/ https://modelo6.augustomello.com.br/depoimento-hopbase/#respond Sat, 25 May 2024 13:18:05 +0000 https://arrudaconsulting.com.br/?p=5645 Olá, tudo bem contigo?

Compartilhando o depoimento de alguns alunos que finalizaram o nosso Treinamento: Hopbase.

Neste treinamento os alunos aprenderam a criar um Produto de BI do zero, abordando as seguintes etapas:

  • Modelagem dos dados.
  • Staging Area.
  • Dimensões e Fatos.
  • Carga Full vs Carga Incremental.
  • Orquestração do ETL.
  • Documentação do DW.
  • Criação dos Relatórios e Dashboards.


O melhor curso de BI que já criamos, pois abordamos não somente o processo de ETL, como no nosso treinamento de Pentaho, mas todo o processo de BI.

São 15 horas de conteúdo em mais de 50 aulas, confira os módulos:

Quer aprender a criar um Produto de BI utilizando somente ferramentas gratuitas? E com 20% de Desconto com uma empresa parceira do Apache Hop.

Link Hopbase

Cupom: PRE.

Muito Obrigado.

Time Arruda Consulting.

]]>
https://modelo6.augustomello.com.br/depoimento-hopbase/feed/ 0
Aumenta a produtividade do teu ETL com Apache Hop https://modelo6.augustomello.com.br/como-utilizar-um-mesmo-etl-diversas-vezes-no-seu-projeto/ https://modelo6.augustomello.com.br/como-utilizar-um-mesmo-etl-diversas-vezes-no-seu-projeto/#comments Sat, 02 Mar 2024 10:39:13 +0000 https://arrudaconsulting.com.br/?p=5564 Imagina que o sistema da tua empresa guarda os dados de pessoa em duas colunas, nome e sobre-nome.

E ao criar um DW, provavelmente que iremos ter esse tratamento de dados em alguns etl, como nas seguintes dimensões:

  • Dim_Funcionarios.
  • Dim_Clientes.
  • Dim_Leads.

Em todas dimensões mencionadas acima teriamos que fazer um mesmo tratamento, que é concatenar as colunas: First_Name e Last_Name.

O objetivo deste artigo é compartilhar uma funcionalidade que aprendi esses dias, que basicamente teríamos um etl para fazer este procedimento e chamaríamos este etl nas três dimensões informadas no início do artigo.

Então vamos para o nosso Hand-ons.

Primeiro, iremos criar o pipeline que as dimensões irá chamar.


Então com Mapping Input iremos informar exatamente os mesmos campos que são utilizados nas dimensões:


Com o Concat fields, criamos uma nova coluna, concatenando as duas colunas mencionadas acima numa nova coluna chamada name.

Importante utilizarmos um espaço, como separador.


E finalizamos este pipeline com o Mapping Output, não é necessário fazer nenhuma configuração neste step.

Agora salvamos este pipeline, e iremos começar o etl que irá chamar este pipeline que acabamos de criar.

Neste ETL iremos ler uma tabela de funcionários, e iremos chamar o pipeline que criamos para ler os dados de first_name e last_name e fazer o concat pra nós.


No Simple Mapping informamos o pipeline que criamos anteriormente e temos a opção de trabalhar com:

  • Variáveis.
  • Campos de entrada.
  • Campos de saída.

Neste exemplo só iremos informar o pipeline mesmo, e agora iremos executar o nosso ETL.

É dessa forma que podemos utilizar um mesmo ETL diversas vezes, otimizando o tempo de desenvolvimento do seu projeto.
Uma vez testado o seu ETL e quiser automatizar a sua carga temos um artigo com um tutorial para automatizar o seu etl.

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

]]>
https://modelo6.augustomello.com.br/como-utilizar-um-mesmo-etl-diversas-vezes-no-seu-projeto/feed/ 2
Como obter o último dia do mês anterior no Hop/Pentaho https://modelo6.augustomello.com.br/como-obter-o-ultimo-dia-do-mes-anterior-no-hop-pentaho/ https://modelo6.augustomello.com.br/como-obter-o-ultimo-dia-do-mes-anterior-no-hop-pentaho/#respond Fri, 23 Feb 2024 15:58:55 +0000 https://arrudaconsulting.com.br/?p=5550 Olá, tudo bem contigo?

Hoje o artigo de hoje é compartilhar contigo uma forma de obter o último dia do mês anterior, de uma forma simples, e objetiva.

Essa solicitação é muito comum recebermos das áreas de negócios principalmente da área financeira quando ocorre o fechamento.

Para este exemplo, irei trazer 3 steps:

Seria possível fazer somente com o step Formula? Sim mas achei que era uma boa oportundiade trazer estes dois steps para poder agregar mais conteúdo ao artigo.

Iremos inciar o pipeline com o Get system info para obter a informação de sysdate,


No Step formula iremos utilizar esta data de sysdate para gerar a coluna que precisamos, o último dia do mês anterior.

ultimo_dia_mes_anterior ->   EOMONTH([data_hoje],-1)

O formula seria semelhante ao DAX pra quem trabalha com Power BI, aonde temos uma séria de funcções a nossa disposição para extrair ainda mais valor dos dados.


Importante que a coluna seja criada utilizando o tipo de dados: Date.
E assim temos exatamente o resultado que queríamos.


Para finalizamos esta tarefa agora iremos utilizar o Select Values para formatar a data para o formato que já estamos acostumado a utilizar: DD/MM/YYYY,
O Select Values é o step que utilizamos tanto para selecionar quais colunas permanecem ou não no pipeline e também onde conseguimos converter os tipos de dados das colunas e também alterar o formato.


E assim finalizamos esse demanda, aonde utilizamos 3 steps:
  • O 1º para buscar a data de sysdate.
  • o 2º para gerar a coluna com o último dia do mês anterior.
  • O 3º para converter o formato dos campos de data.


Muito Obrigado e até o próximo artigo.
Rafael Arruda.
]]>
https://modelo6.augustomello.com.br/como-obter-o-ultimo-dia-do-mes-anterior-no-hop-pentaho/feed/ 0