L em 2014, eu escrevi esse post: https://blog.merazzi.com.brpowerview-como-ordenar-uma-coluna-que-nao-seja-por-ordem-alfabetica/, usando o Power View.
Normalmente a dvida vem com a imagem de um grfico de barras e a pergunta: “Como eu fao para que os meses fiquem ordenados ‘direito’?”
Com o uso cada vez maior do Power BI, eu notei que essa uma dvida meio que recorrente no grupos que eu participo e o principal motivo : a ausncia de uma tabela de calendrio. Se voc no cria essa tabela em seus projetos, faa.
Existem vrias formas de configurar a ordenao… Aqui eu pretendo abordar algumas formas e problemas que podem ocorrer durante o processo.
Antes de continuarmos… Onde vocs lerem “Mail”, por favor, leiam “Maio”… Eu s fui ver que o nome do ms estava errado quando estava no final… Como no acredito que o post perca a validade por causa disso, eu resolvi manter. Por isso, eu peo desculpas… #facepalm
Neste primeiro caso, irei simular a importao de um arquivo Excel. Veja na imagem abaixo, que ns temos 4 colunas: Estado, Ano, Mes, Valor.
Ao criarmos um grfico de valores x perodo, ficamos com o resultado da primeira imagem. Isso ocorre basicamente, pois a ordenao do eixo realizada pela ordem especificada por padro na coluna, ou seja: ordem alfabtica pelo nome do ms.
Soluo 1: Criar no Excel uma coluna com o valor numrico do ms, reimportar e pedir para ordenar por ela.
A vocs iro me dizer: “Mas eu no quero o nmero do ms… Eu quero o nome!” Ok, querido Padawan, a entra a magnfica opo “Classificar por coluna”.
Com a coluna Ms selecionada, entrem nessa opo e mande classificar pela coluna NumMes. Feito isso…
O que houve? Escolhemos a ordem certa, qual foi o problema? Voltamos tabela…
Viram o tipo que o PowerBI importou do Excel? Texto. Como a ordenao de um texto feita caractere a caractere, a ordenao dos meses fica: 1, 10, 11, 12, 2, 3, 4, 5, 6, 7, 8, 9 Ento aqui temos duas opes:
- Editar a planilha original, colocando um 0 (zero) frente dos nmeros com um algarismo (01, 02, 03, 04,…);
- Alterar o tipo da coluna para Inteiro.
Vou me ater aqui segunda opo, mas fica como curiosidade para simular colocando o zero na frente.
Ento no local em destaque da imagem acima, troque o tipo de dados para inteiro. Aparecer a imagem abaixo:
Apenas confirme e…
O post poderia terminar aqui, mas vamos dar uma olhada no que podemos ter de problemas ao usar o Excel para controlar o periodo.
- Ms com o nome errado… Essa precisou entrar aqui… #facepalm
- Dois valores para um mesmo ms, ou valores nulos:
-
- Aqui, est bem fcil de ver, mas pensem numa planilha com milhares de linhas, com ordenaes diversas… encontrar o erro s vezes muito complicado e o ajuste vai implicar em realizar a importao do arquivo novamente.
“Mas Logan… E se ao invs de fazer toda a mo no Excel, eu fizer no prprio PowerBI? Isso evitaria o problema da insero dentro do Excel…”
Verdade!!! Vamos ver… Uma soluo que eu vi, foi a de criar uma coluna calculada dentro do PowerBI usando o SWITCH, que seria o equivalente ao CASE no SQL Server. Ns criamos a coluna fazendo um SWITCH para cada ms, criando o valor numrico dele, isso acaba com a possibilidade dos valores duplicados… Faz sentido…
1 2 3 4 5 6 7 8 |
NumeroDoMesCalculado = SWITCH('dados_financeiros (4)'[mes], "Janeiro", 1, "Fevereiro", 2, ,3, "Abril",4, "Maio",5, "Junho",6, "Julho",7,"Agosto",8, "Setembro",9,"Outubro",10, "Novembro",11,"Dezembro",12) |
Agora s mandar classificar e….
O que acontece: como a coluna calculada criada baseada no nome do ms, eu no posso fazer com a coluna nome do ms seja ordenada pela coluna calculada… Ou seja, at faria sentido, se funcionasse…
EDIT: Aps publicar o post, o Maruan (LinkedIn) comentou sobre a possibilidade de criar um grupo em cima da coluna com o nome do ms e fazer essa coluna ser ordenada. De fato, funciona (e fica como uma sugesto), apenas precisaria testar para ver se o grupo pode causar algum efeito colateral nas vises que estiver realizando (creio eu que no). Ou seja, sim, o Switch mais um recurso que pode ser utilizado nesta tarefa, apenas no diretamente sobre a coluna original. justamente por isso que eu gosto da comunidade SQL / Power BI. Todo mundo compartilhando o conhecimento e se ajudando. exatamente isso o que faz com que a comunidade cresa sempre. Valeu Maruan!
Eu gosto muito de criar uma tabela de calendrio no SQL Server usando um CTE recursiva, onde eu j monto todas as colunas que eu quero, formatadas, e a eu importo ela usando o conector do SQL (se achar que essa tabela vale um post, comenta a, mas nada que uma Googleada no resolva).
Outra opo criar a tabela de calendrio usando DAX e formatando conforme desejado, colocando a ordenao nela e depois relacionando com a tabela destino.
Exemplo:
1 2 3 4 5 6 7 8 |
dCalendario2 = var FullCalendar = ADDCOLUMNS(CALENDAR(date(2017,01,01),date(2018,12,31)), "Numero Do Mes",MONTH([Date]), "Ano",YEAR([Date]), "AnoMes",LEFT(FORMAT([Date],"yyyyMMdd"),6), "Nome Do Mes", FORMAT([Date],"MMMM")) return SUMMARIZE(FullCalendar,[Numero Do Mes],[Ano], [AnoMes],[Nome Do Mes]) |
Aqui eu estou apenas criando uma tabela de calendrio agrupada por ms e ano, que o que eu preciso para esse cenrio. Aps, basta a gente relacionar essa tabela com a anterior e refazer a criao do grfico
Vocs notaram que no grfico de baixo o ms de maio no aparece? Isso ocorre por causa do meu erro na tabela original, onde o ms de maio se chama mail… Ao criar a tabela usando o mtodo que eu considero o ideal, via PowerBI, o dado nem apareceu, pois o calendrio no possui o ms chamado mail.
Espero ter contribudo.
[]’s!
Muito bom o artigo Logan bem explicativo e detalhado as formas de como resolver uma ordenao em um grfico. Show!
Estou h mais de 1 hora pesquisando como ordenar coluna numa matriz e no encontrei nada… Ser que impossvel fazer isso no Power BI? Me recuso a acreditar nisso…
Opa! E a Danilo! Impossvel no … hehehe
Existem algumas formas de se fazer (com colunas indexadas, por exemplo). Qualquer coisa, estamos a. 😉
Estou na mesma brother… 🙁
Valeu!
Logan boa tarde.
Estou montando um dashboard com: informaes x ms e a dica funcionou perfeitamente para o grafico.
Porm meu dashboard possui uma tabela com os mesmos dados do grfico e este no consigo ordenar de jeito nenhum.
Poderia me ajudar?
Opa, tudo bom Mateus?
Bom saber que o post foi til. 🙂
Se vc me passar maiores detalhes, com algum exemplo, eu posso ver o que pode ser.
Bom dia meu camarada. Estou tentando fazer uma DRE a partir do balano e montei a mscara dela. Uma coluna para conta contbil, outra coluna para descrio da conta e uma coluna para ordem. Queria ordenar a DRE pela coluna ordem onde j t a mscara certinho e o layout do que preciso. Mas quando fao isso ele d a mensagem que no posso classificar a descrio por ordem porque no possvel haver mais de um valor em ordem para descrio. No caberia aqui uma dCalendar n? Como eu fao um clculo para ordenar isso, com uma swuitch mesmo?
abraos e obrigado
Depois de procurar muito consegui uma resposta que realmente ajudou. Agradeo muito por compartilhar as informaes!!!
Oi Danielle!
Poxa, que bom saber que esse post ajuda ainda hoje. 🙂
Esse blog est to abandonado, que receber uma feedback desses, at me faz pensar em voltar a escrever.
Obrigado msm!