Ir para conteúdo

Gustavo Dassie

Alunos
  • Total de itens

    25
  • Registro em

  • Última visita

Perfil

Informações adicionais

  • Sexo
    ♂ Masculino
  • Mora em
    RJ
  • Nasceu dia
    13-02-1989

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

Gustavo Dassie's Achievements

Especialista

Especialista (4/6)

  • Feliz 2° ano! 😍
  • Feliz 1° ano! ✨

Recent Badges

3

Reputação

1

Community Answers

  1. Posso estar confundindo a pergunta, mas acredito que você esteja querendo saber se é possível fazer o ETL dentro do banco ou se precisa de ferramentas externas ao banco, não necessariamente que a outra opção seria o Power Query. Mas, respondendo sua pergunta, sim. É possível você fazer o processo de ETL dentro do SQL Server. O SQL Server tem estruturas de Procedures, onde você consegue estruturar o Pipeline de tratamento de dados e automatizar as extrações, os tratamentos e carregamentos em uma estrutura de DW. É uma ferramenta muito útil quando está lidando com dados do próprio SQL Server. Caso sua fonte de dados seja de várias localidades (ORACLE, API, Postgresql, Arquivos CSV, Excel, e afins), EU acho mais indicado fazer o processo de ETL à parte do Banco de Dados que será utilizado como DW. Exemplo: no momento, atuo em um cliente que tem fontes de dados provindo do SAP Hanna, Postgresql, MySQL, Planilhas e APIs. Por isso todo o meu processo de ETL é realizado via Python e o Pipeline de execução é realizado via Airflow. Com o Python eu realizo toda a camada de stage (de onde irei consumir os dados para construção do DW, assim não sobrecarregando o banco de Produção do cliente). Então, a primeira etapa, é extrair os dados de todas as fontes e inserir em um Schema de STAGE. Após realizar as extrações, faço todo o processo de Tratamento dos dados e carregamento dos dados também utilizando do Python E de SQL, tornando assim um processo de ETL robusto e de fácil compreensão para novos integrantes da equipe. Espero ter ajudado!
  2. Bom dia Bruno! Sim, fazer essa coluna na fato não resolveria o problema visto que eu necessitava que fosse dinâmico, porém consegui chegar em uma solução. Vou postar aqui o passo a passo, caso alguém tenha a mesma dúvida: Primeiro, criei uma tabela de Classificação, conforme o print: Nela eu informei a classificação, o valor mínimo e o valor máximo para cada uma delas e adicionei um cd_classificação Feito isso, criei a seguinte medida em DAX (vou adicionar os comentários de cada etapa na própria medida): _Beneficiarios = VAR vEtapa1 = //Nesta etapa, eu seleciono apenas os beneficiários ativos contidos na dimensão de beneficiários FILTER( ALL(D_NT_BENEFICIARIO) , [DT_VIGENCIA_FIM] = BLANK() ) VAR vEtapa2 = //Aqui, eu pego apenas a coluna de identificação de cada beneficiário (sk_nt_beneficiario) DISTINCT(SELECTCOLUMNS(vEtapa1, D_NT_BENEFICIARIO[sk_nt_beneficiario])) VAR vEtapa3 = //Nesta etapa, verifico quais beneficiários da dimensão estão contidos na Fato FILTER( F_NT_NOTATECNICA , F_NT_NOTATECNICA[sk_nt_beneficiario] IN vEtapa2 ) VAR vEtapa4 = (1 + SELECTEDVALUE('TX_SIMULACAO'[TX_SIMULACAO])) // Essa etapa é onde irá pegar o parâmetro da taxa de simulação e soma 1, para que possamos multiplicar mais à frente. VAR vEtapa5 = //Nesta etapa, a fim de performance, faço uma agregação da fato apenas para pegar o beneficiário e o valor de cada uma das colunas que são necessárias no visual, e já com a taxa de simulação. SUMMARIZE( F_NT_NOTATECNICA , [sk_nt_beneficiario] , "Valor Faturado", SUM(F_NT_NOTATECNICA[vl_faturamento]) , "Valor Coluna T", SUM(F_NT_NOTATECNICA[D_NT_NOTATECNICA.coluna_t]) , "Valor Coluna K", SUM(F_NT_NOTATECNICA[D_NT_NOTATECNICA.coluna_k]) , "Valor Coluna Q", SUM(F_NT_NOTATECNICA[D_NT_NOTATECNICA.coluna_q]) , "Valor Total * tx", SUM(F_NT_NOTATECNICA[vl_faturamento]) * vEtapa4 ) VAR vEtapa6 = //Aqui é criado a classificação de acordo com os cd_classificação determinado na tabela de Classificação. ADDCOLUMNS( vEtapa5 , "Rank", ([Valor Total * tx] / [Valor Coluna T]) - 1 , "Classificação", SWITCH( TRUE(), ([Valor Total * tx] / [Valor Coluna T]) - 1 <= -0.5, 1, ([Valor Total * tx] / [Valor Coluna T]) - 1 <= -0.3, 2, ([Valor Total * tx] / [Valor Coluna T]) - 1 <= -0.01, 7, ([Valor Total * tx] / [Valor Coluna T]) - 1 <= 0.01, 3, ([Valor Total * tx] / [Valor Coluna T]) - 1 <= 0.25, 4, ([Valor Total * tx] / [Valor Coluna T]) - 1 <= 0.5, 5, ([Valor Total * tx] / [Valor Coluna T]) - 1 > 0.5, 6 ) ) VAR vEtapa7 = //E aqui eu faço o vínculo da Classificação da Etapa 7 com a tabela de Classificação (aqui está com o nome de Simulação) ADDCOLUMNS( 'Simulação' , "Total Beneficiários", COUNTROWS(FILTER(vEtapa6, [Classificação] = 'Simulação'[cd_classificacao])) ) RETURN SUMX(vEtapa7, [Total Beneficiários]) //Para o total de beneficiários, retorno o SUMX trazendo da Classificação da Etapa 7 E com isso, fazendo para cada um dos campos desejados, cheguei no resultado final esperado:
  3. Show! Eu tava vindo pra responder kkkk foi dessa forma mesmo. Que bom que conseguiu!
  4. Consegue compartilhar o xlsx da fonte também?
  5. Mas onde exatamente vc fez a alteração com a localidade? Realmente é estranho, eu fiz o teste aqui em uma coluna de faturamento e deu certo: Seguiu os passos que falei no Power Query?
  6. Boa tarde @lucas.zulini. De uma olhada no Power Query, selecione a coluna que você quer manter o padrão e clique com o botão direito: Terá essa opção. Alterar tipo>Usando a Localidade. Configure da seguinte forma: Veja que o exemplo já fica usando a vírgula para separador de milhar e o ponto para separador de decimais.
  7. Bom dia a todos! Estou empacado em uma resolução e sei que deve ser simples de resolver, mas como estou há 1 ano basicamente mexendo com Tableau, as coisas vai enferrujando.. kkk (e por favor, não usem Tableau. Power BI é bem melhor). Mas ao que interessa. Eu tenho uma fato com os registros de beneficiarios e eu preciso classifica-los da seguinte forma: SWITCH( TRUE(), [Variação da Coluna T] <= -0.5, "1. Menor que -50%", [Variação da Coluna T] <= -0.3, "2. Menor que -30%", [Variação da Coluna T] <= 0.1, "3. Entre 1 E -1%", [Variação da Coluna T] <= 0.25, "4. Até 25%", [Variação da Coluna T] <= 0.5, "5. Até 50%", [Variação da Coluna T] > 0.5, "6. Acima de 50%", "-" ) Pra poder exibir em um visual de tabela, +- da seguinte forma: Acontece que esse valor simulado é feito através de parâmetros, onda a pessoa seleciona o % que deseja simular de aumento. E será comparado com esse Produto da Coluna T, Coluna K e Coluna Q e a formatação condicional das cores de Vermelho (1), Marrom (2 e 3), Laranja (4), Verde Claro (5) e Verde Escuro (6). Mas, quando for alterado esse valor simulado, eu preciso que os beneficiários sejam classificados de forma dinâmica também e mudar entre as classificações. Alguém poderia me ajudar? Segue o PBIX de amostra. Nele deixei a forma que construí a classificação apenas a fim de entendimento, mas o beneficiário não pode ser classificado de forma fixa como está mas sim de forma dinâmica, para que, quando ele mudar de Classificação, ele altere a coluna de Beneficiários. Qualquer dúvida, estou à disposição! Simulador - NT 3 - Copia.pbix
  8. E consegui retornar com a medida a coluna calculada: Relacionamento = VAR Resultado = LOOKUPVALUE( 'Tabela Filtrada'[Total_qtd_vidas], 'Tabela Filtrada'[sk_entidade_classe], dEntidadeClasse[sk_entidade_classe] ) RETURN IF( Resultado >= 100, "Relacionamento", "Não relacionamento") Agora a questão é, é possível fazer isso sem a necessidade de criar uma tabela?
  9. Consegui, pela criando a tabela, chegar nesse resultado: Tabela Filtrada = VAR TabelaAgrupada = FILTER( ADDCOLUMNS ( SUMMARIZE ( fCarteira, fCarteira[sk_entidade_classe], fCarteira[dt_competencia], "Total_qtd_vidas", SUM ( fCarteira[qtd_vidas] ) ), "Max_total_qtd_vidas", CALCULATE ( MAXX ( SUMMARIZE ( fCarteira, fCarteira[sk_entidade_classe], fCarteira[dt_competencia], "Total_qtd_vidas", SUM ( fCarteira[qtd_vidas] ) ), [Total_qtd_vidas] ), ALLEXCEPT ( fCarteira, fCarteira[sk_entidade_classe] ) ) ), [Total_qtd_vidas] > 100) VAR TabelaResultado = SELECTCOLUMNS ( FILTER ( TabelaAgrupada, [Total_qtd_vidas] = [Max_total_qtd_vidas] ), "sk_entidade_classe", fCarteira[sk_entidade_classe], "dt_competencia", fCarteira[dt_competencia], "Total_qtd_vidas", [Total_qtd_vidas] ) RETURN TabelaResultado Ele trás apenas a sk_entidade_classe, a dt_competencia que teve a maior quantidade de vidas e o total_qtd_vidas dessa competencia. Agora é questão de, ao invés de criar uma tabela para isso, adicionar apenas a coluna na dimensão kkkk
  10. Olá, boa noite. Estou apanhando em uma medida. Estou precisando adicionar uma coluna calculada em uma dimensão, baseado no valor da fato. Eu tenho uma dimensão chamada dEntidadeClasse e ela precisa ter uma coluna informando se aquela entidade será atendida pelo pessoal do Relacionamento ou não. Retorno esperado: Relacionamento e Não relacionamento. Para isso, eu preciso analisar na fato carteira (fCarteira) se, em alguma competência (YYYYMM) em todo o histórico, a soma da coluna qtd_vidas para cada entidade_classe está acima de 100 ou abaixo. Se está acima, retornará Relacionamento. Se está abaixo, retornará Não relacionamento. Vale ressaltar que, como a Fato tem outras colunas, então a entidade poderá se repetir pela mesma competência, variando apenas produto, cliente, ou qualquer outra coluna. Por isso precisa ser somado a qtd_vidas por competência e entidade_classe, para saber se está acima de 100 ou não. Eu criei (para fins de testes) uma tabela através da seguinte medida: TabelaAgregada = FILTER( SUMMARIZECOLUMNS( fCarteira[sk_entidade_classe], fCarteira[dt_competencia], "SomaQtdVidas", SUM(fCarteira[qtd_vidas])), [SomaQtdVidas] > 100 ) Porém, na dEntidadeClasse, eu preciso trazer apenas se a entidade está contida nessa tabela. Se estiver muito confuso, posso preparar um arquivo com as tabelas kkkk Obrigado desde já!
  11. @Nelson Kobayashi hahahahaha sucesso, era isso mesmo que eu precisava!! Muito obrigado, Nelson!!
  12. @Nelson Kobayashi rapaaaaz hahahahaha daí ficou sensacional. É exatamente isso, aparentemente. kkkkkk. Uma dúvida que fiquei. Se por acaso pegar o período de 2 anos, ele vai fazer um acumulado somente dos meses ou vai dar alguma caca na questão de jogar o acumulado de um ano para o outro?
  13. @Nelson Kobayashi quase isso.. mas precisa ser o acumulado de cada mês.. Por exemplo Janeiro: cancelamento acumulada do dia 01/01 até o dia 31/01 Fevereiro: cancelamento acumulado do dia 02/01 até dia 28/02 Mas não pode pegar o acumulado do mês de janeiro, entende?
  14. E sim, o gráfico é bem estranho, mas basicamente é para uma análise dos meses separados, para verificar em qual período do mês se tem a maior número de evasão.
  15. @Nelson Kobayashiela é criada no Power Query, não importada. Inclusive, criei um pbix aqui com dados gerados em um xls. Não ficou perfeito, mas da pra compreender kkkk fCancelamentos.xlsxCancelamentos.pbix A tabela de cancelamentos do cliente tem muito mais informações, mas a essência é essa. A tabela calendário está exatamente igual à do arquivo original.
×
×
  • Criar Novo...