Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Power BI - ETL - Indicadores

Boa noite.

Na imagem abaixo podemos ver que as colunas "DY" e "ROE" estão no formato texto conforme aula.

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeApós transformação o % ficou muito alto.

Minha dúvida é se o resultado (percentual muito alto) esta correto ou houve algum erro em alguma etapa?

Na imagem abaixo está a etapa com o resultado da transformação para percentual.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Código M:

let
  Fonte = Python.Execute(
    "# Importando as bibliotecas#(lf)import fundamentus#(lf)import pandas as pd#(lf)#(lf)# Definindo a carteira de ações#(lf)carteira_fund = [""ABEV3"", ""B3SA3"", ""ELET3"", ""GGBR4"", ""ITSA4"",#(lf)                 ""PETR4"", ""RENT3"", ""SUZB3"", ""VALE3"", ""WEGE3""]#(lf)#(lf)# Criando um df com algumas infos da carteira#(lf)ind = fundamentus.get_papel(carteira_fund)[['Setor', 'Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado',#(lf)                                            'Nro_Acoes', 'Patrim_Liq','Receita_Liquida_12m','Receita_Liquida_3m',#(lf)                                            'Lucro_Liquido_12m', 'Lucro_Liquido_3m']]#(lf)# Passando o ticker para uma coluna#(lf)ind = ind.reset_index()#(lf)ind.rename(columns = {'index':'Ativo'}, inplace=True)#(lf)#(lf)# Alterando colunas object para numeric#(lf)colunas = ['Cotacao', 'Min_52_sem', 'Max_52_sem', 'Valor_de_mercado', 'Nro_Acoes', 'Patrim_Liq',#(lf)           'Receita_Liquida_12m', 'Receita_Liquida_3m', 'Lucro_Liquido_12m', 'Lucro_Liquido_3m']#(lf)ind[colunas] = ind[colunas].apply(pd.to_numeric, errors='coerce', axis=1)#(lf)#(lf)# Criando um novo df com alguns indicadores da carteira#(lf)ind_2 = fundamentus.get_resultado_raw().reset_index()#(lf)ind_2 = ind_2.query(""papel in @carteira_fund"")#(lf)ind_2 = ind_2[['papel','P/L', 'Div.Yield','P/VP','ROE']].reset_index(drop=True)#(lf)ind_2.rename(columns={'papel': 'Ativo','Div.Yield':'DY'}, inplace= True)#(lf)#(lf)# Concatenando os dfs em um só com as infos e indicadores#(lf)indicadores = pd.merge(ind, ind_2, on=""Ativo"")#(lf)#(lf)# Criando uma coluna para LPA (Lucro por Ação) e VPA (Valor Patrimonial por ação)#(lf)# para calcular a fórmula de Graham  Valor intrínseco de uma ação (VI = √22,5 x LPA x VPA)#(lf)indicadores[""LPA""] = (indicadores[""Lucro_Liquido_12m""] / indicadores [""Nro_Acoes""]).round(2)#(lf)indicadores[""VPA""] = (indicadores[""Patrim_Liq""] / indicadores [""Nro_Acoes""]).round(2)#(lf)#(lf)del ind, ind_2, carteira_fund, colunas#(lf)"
  ),
  indicadores1 = Fonte{[Name = "indicadores"]}[Value],
  #"Tipo Alterado" = Table.TransformColumnTypes(
    indicadores1,
    {
      {"Ativo", type text},
      {"Setor", type text},
      {"Cotacao", Int64.Type},
      {"Min_52_sem", Int64.Type},
      {"Max_52_sem", Int64.Type},
      {"Valor_de_mercado", Int64.Type},
      {"Nro_Acoes", Int64.Type},
      {"Patrim_Liq", Int64.Type},
      {"Receita_Liquida_12m", Int64.Type},
      {"Receita_Liquida_3m", Int64.Type},
      {"Lucro_Liquido_12m", Int64.Type},
      {"Lucro_Liquido_3m", Int64.Type},
      {"P/L", Int64.Type},
      {"DY", Int64.Type},
      {"P/VP", Int64.Type},
      {"ROE", Int64.Type},
      {"LPA", Int64.Type},
      {"VPA", Int64.Type}
    }
  ),
  #"Executar script Python" = Python.Execute(
    "# 'dataset' tem os dados de entrada para este script#(lf)import numpy as np#(lf)#(lf)#(lf)dataset[""Valor_Intrinseco""] = np.sqrt(22.5*dataset[""LPA""]*dataset[""VPA""]).round(2)#(lf)",
    [dataset = #"Tipo Alterado"]
  ),
  dataset = #"Executar script Python"{[Name = "dataset"]}[Value],
  #"Tipo Alterado com Localidade" = Table.TransformColumnTypes(
    dataset,
    {{"P/VP", type number}},
    "en-US"
  ),
  #"Tipo Alterado com Localidade1" = Table.TransformColumnTypes(
    #"Tipo Alterado com Localidade",
    {{"DY", Percentage.Type}},
    "en-US"
  ),
  #"Tipo Alterado com Localidade2" = Table.TransformColumnTypes(
    #"Tipo Alterado com Localidade1",
    {{"ROE", Percentage.Type}},
    "en-US"
  )
in
  #"Tipo Alterado com Localidade2"
2 respostas
solução!

Olá Romulo, boa noite!

Para identificar e solucionar esse problema, peço que faça algumas verificações. Peço que verifique se no momento de Alterar tipo com localidade as colunas "DY" e "ROE" estão sendo convertidas corretamente para número decimal antes de serem convertidas para percentual.

captura de tela da janela alterar tipo com localidade

Notei que suas etapas aplicadas estão diferentes da do instrutor que seria:

captura de tela das etapas aplicadas

Neste caso, o que recomendo é refazer os passos, da aula Transformando os dados dos indicadores.

Espero ter ajudado e fico à disposição.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Boa noite.

Realmente havia uma etapa a mais no meu BI.

Etapa "Tipo Alterado".

Somente excluí e deu certo.

Obrigado!