Ir para conteúdo
  • 0

Transformar colunas em linhas (repetição)


Ir para solução Solucionado por Frank Figueredo ,

Pergunta

9 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos
  • Solução
Postado

@Thiago Pedrazi esses dados aparentam estarem sumarizados, numa granularidade mais alta, onde não é possível determinar com bases neles qual a quantidade de Tickets para cada Tipo de Operação.

Dessa forma é necessário fazer o rateio com base em alguma regra de negócio, mas para isso é preciso entender junto a área o que mais faz sentido para aplicar esse rateio.

Tudo vai depender do que você quer analisar.

Se quiser ver a quantidade de tickets sob o ponto de vista da forma de pagamento, é preciso fazer algum rateio conforme o Bruno sugeriu, ou com base em alguma outra regra.

Agora, se quiser analisar do ponto de vista de tempo, loja, segmento e etc não tem problema os valores ficarem duplicados, mas seria preciso fazer uma medida Semi aditiva, pois dependendo de como você vai querer analisar não poderá somar os valores, mais detalhes sobre os tipos de métricas: https://rafaelpiton.com.br/blog/data-warehouse-tipos-metricas/. Ou então separar em duas fatos conforme você mesmo sugeriu.

Então é preciso entender o que você precisa e depois definir a modelagem e o tratamento dos dados.

De maneira geral, gosto de usar o dado no menor grão possível, ou seja cada linha representando uma transação, ou Ticket, com isso toda a complexidade de rateio e separação de fatos vai embora, em contrapartida aumenta a quantidade de dados que você vai ter.

Então se faz parte do seu cenário acho que seria uma alternativa pegar os dados a nível de registro, com isso a quantidade de Tickets seria uma Medida e não uma coluna, com isso conseguiria analisar sob todos essas perspectivas sem rateios ou duplicação de fatos.

 

  • Like 1
  • 0
  • Alunos
Postado

Olá @Thiago Pedrazi!

Como você vai transformas valores das colunas em linhas não tem como não repetir as demais informação que ficarão "fixas" após essa transformação.

Vejo duas formas de resolver, caso a sua necessidade seja usar essa coluna de Tipo Pagamento no eixo de algum gráfico:

  • Criar duas tabelas Fatos, uma para a quantidade de tickets e outra com as formas de pagamento, assim você fará a transformação apenas na segunda e terá a informação de tickets sem duplicar na primeira.
  • Criar uma tabela Dimensão com os Tipos de Pagamento e na sua medida que vai somar os valores você usa SELECTDVALUE e SWITCH, algo assim:

    Valor Tipo Pagamento =
    VAR vTipo = SELECTDVALUE(dTipoPagamento[Nome])

    VAR vCredito = SUM(fFato[CRÉDITO])
    VAR vDebito = SUM(fFato[DÉBITO])
    VAR vDinheiro = SUM(fFato[DINHEIRO])
    VAR vPix = SUM(fFato[PIX])

    VAR vResultado =
    SWITCH (
        TRUE(),
        vTipo = "Crédito", vCredito,
        vTipo = "Dédito", vDebito,
        vTipo = "Dinheiro", vDinheiro,
        vTipo = "Pix", vPix
    )

    RETURN
        vResultado
     

Eu faria da segunda forma, mas veja se alguma dessas opções lhe ajuda e, caso não, nos retorne aqui onde e como você precisa usar essa coluna para entendermos melhor e possamos te ajudar mais.

  • Like 1
  • 0
  • Alunos
Postado
15 horas atrás, Michele disse:

Olá @Thiago Pedrazi!

Como você vai transformas valores das colunas em linhas não tem como não repetir as demais informação que ficarão "fixas" após essa transformação.

Vejo duas formas de resolver, caso a sua necessidade seja usar essa coluna de Tipo Pagamento no eixo de algum gráfico:

  • Criar duas tabelas Fatos, uma para a quantidade de tickets e outra com as formas de pagamento, assim você fará a transformação apenas na segunda e terá a informação de tickets sem duplicar na primeira.
  • Criar uma tabela Dimensão com os Tipos de Pagamento e na sua medida que vai somar os valores você usa SELECTDVALUE e SWITCH, algo assim:

    Valor Tipo Pagamento =
    VAR vTipo = SELECTDVALUE(dTipoPagamento[Nome])

    VAR vCredito = SUM(fFato[CRÉDITO])
    VAR vDebito = SUM(fFato[DÉBITO])
    VAR vDinheiro = SUM(fFato[DINHEIRO])
    VAR vPix = SUM(fFato[PIX])

    VAR vResultado =
    SWITCH (
        TRUE(),
        vTipo = "Crédito", vCredito,
        vTipo = "Dédito", vDebito,
        vTipo = "Dinheiro", vDinheiro,
        vTipo = "Pix", vPix
    )

    RETURN
        vResultado
     

Eu faria da segunda forma, mas veja se alguma dessas opções lhe ajuda e, caso não, nos retorne aqui onde e como você precisa usar essa coluna para entendermos melhor e possamos te ajudar mais.

Oi @Michele, Bom dia!
Eu estava pensando sobre separar as fatos...ter uma Fato Tickets e outra Fato como valor dos cartões..
A medida que vc fez é incrível! Eu ainda não domino Dax avançado, mas ficou perfeita! obg mesmo!

O que estou pensando é que eu já tenho esse Dashboard pronto com as informações do ano de 2021..e ano passado a gente só tinha a coluna de Tickets e Faturamento por loja. Mas esse ano entrou mais uma informação que o Tipo de Pagamento..

O Bruno deu uma opção de resposta tbm mto bacana que resolveria o problema..
Mas eu estou em dúvida, se ainda sim não seria melhor separar as fatos!
 

Anexei minha base de 2021 pra você ver..

 

 

 

image.png

  • 0
  • Alunos
Postado
1 hora atrás, Bruno Abdalla de Souza disse:

Eu agrupei os dados para encontrar quantas vezes se repetia cada valor. Depois dividi ele por esta contagem e obtive o valor diluído. Depois é só somar em uma medida para chegar ao valor original.

BaseTeste.pbix 53 kB · 1 download

Bom dia @Bruno Abdalla de Souza ! Obg pela solução! Resolveria sim o problema! Obg mesmo!

Eu estou pensando em separar em duas fatos...Uma Fato Tickets e outra Fato com o valor dos cartões..
Pela sua experiência, o que vc acha?

O que estou pensando é que eu já tenho esse Dashboard pronto com as informações do ano de 2021..e ano passado a gente só tinha a coluna de Tickets e Faturamento por loja. Mas esse ano entrou mais uma informação que é o Tipo de Pagamento..

Anexei minha base de 2021 pra você ver..

 

 

image.png

  • 0
  • Alunos
Postado

Olá @Thiago Pedrazi!

O que o Frank respondeu por último faz total sentido, não tinha me dado conta que realmente os dados já estão agrupados/sumarizados no seu modelo. Caso você tenha acesso aos dados por ticket, com certeza será o ideal e com certeza não precisará separar em duas fatos.

Veja se você tem essa possibilidade, se sim, creio que a orientação do Frank seja a mais coerente para a sua necessidade.

  • 0
  • Alunos
Postado
2 horas atrás, Frank Figueredo disse:

@Thiago Pedrazi esses dados aparentam estarem sumarizados, numa granularidade mais alta, onde não é possível determinar com bases neles qual a quantidade de Tickets para cada Tipo de Operação.

Dessa forma é necessário fazer o rateio com base em alguma regra de negócio, mas para isso é preciso entender junto a área o que mais faz sentido para aplicar esse rateio.

Tudo vai depender do que você quer analisar.

Se quiser ver a quantidade de tickets sob o ponto de vista da forma de pagamento, é preciso fazer algum rateio conforme o Bruno sugeriu, ou com base em alguma outra regra.

Agora, se quiser analisar do ponto de vista de tempo, loja, segmento e etc não tem problema os valores ficarem duplicados, mas seria preciso fazer uma medida Semi aditiva, pois dependendo de como você vai querer analisar não poderá somar os valores, mais detalhes sobre os tipos de métricas: https://rafaelpiton.com.br/blog/data-warehouse-tipos-metricas/. Ou então separar em duas fatos conforme você mesmo sugeriu.

Então é preciso entender o que você precisa e depois definir a modelagem e o tratamento dos dados.

De maneira geral, gosto de usar o dado no menor grão possível, ou seja cada linha representando uma transação, ou Ticket, com isso toda a complexidade de rateio e separação de fatos vai embora, em contrapartida aumenta a quantidade de dados que você vai ter.

Então se faz parte do seu cenário acho que seria uma alternativa pegar os dados a nível de registro, com isso a quantidade de Tickets seria uma Medida e não uma coluna, com isso conseguiria analisar sob todos essas perspectivas sem rateios ou duplicação de fatos.

 

Mto bacana sua resposta @Frank Figueredo! Mto obrigado mesmo! Abri o link e entendi a explicação do Rafael Piton. Obg pela dica!

Então, eu não tenho essa informação de tickets sob o ponto de vista de forma de pagamento. Não é mto o foco nesse momento..talvez no futuro!

Só vou analisar tickets por loja, segmento, tempo e etc. Calcular Ticket Médio..e etc.
Como eu estou com um pouco de pressa..acho melhor nesse momento, separar em duas fatos...

Eu teria que entender melhor sobre medida semi-aditiva em Dax..e talvez demore um pouco pra entender bem sobre isso!
Eu preciso entregar um relatório entre hoje e amanhã..então talvez seja melhor separar em duas fatos. E nos próximos dias, eu estudo melhor essa parte Dax pra tentar fazer essa medida semi-aditiva.

A opçao do Bruno tbm é bacana..de fazer o rateio!

Gratidão pela ajuda!

  • Like 1
  • 0
  • Alunos
Postado
2 horas atrás, Michele disse:

Olá @Thiago Pedrazi!

O que o Frank respondeu por último faz total sentido, não tinha me dado conta que realmente os dados já estão agrupados/sumarizados no seu modelo. Caso você tenha acesso aos dados por ticket, com certeza será o ideal e com certeza não precisará separar em duas fatos.

Veja se você tem essa possibilidade, se sim, creio que a orientação do Frank seja a mais coerente para a sua necessidade.

@Michele, boa tarde!
Eu vi aqui a reposta do Frank...mto bacana tbm!
Algo que parecia ser simples..entrou numa análise bem profunda! Cada diz aprendendo mais sobre Power BI!
Obrigado pela ajuda de vocês! Gratidão!

  • Like 2

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...