Formatando uma tabela cruzada no Webi # Parte1 | BusinessObjects
Pessoal, nesse post eu irei apresentar algumas manhas de como formatar uma tabela de referência cruzada no Webi com um design mais interessante.
Vamos considerar um relatório com as seguintes características:
Universo: eFashion
Dimensões: Year, Month, State, City
Métricas: Sales revenue
Condições: Year = 2004; State = California, Texas e New York
Tabela de referência cruzada:
Linhas: State, City
Colunas: Month
Centro: Sales revenue
Esse aqui é o "arroz com feijão" que qualquer um que pelo menos iniciou em Webi já sabe fazer. Vamos então as etapas para "perfumar" o relatório:
# Parte 1: Formatando o campo Month para exibir em texto: janeiro, fevereiro…
Se por acaso você estiver pensando em usar um "super SE" semelhante a isso:
=Se([Month]=1;"janeiro";Se([Month]=2;"fevereiro";Se([Month]=3;"março";Se([Month]=4;"abril";Se([Month]=5;"maio";Se([Month]=6;"junho";Se([Month]=7;"julho";Se([Month]=8;"agosto";Se([Month]=9;"setembro";Se([Month]=10;"outubro";Se([Month]=11;"novembro";Se([Month]=12;"dezembro";"indefinido"))))))))))))
Isso não vai dar certo, pois as colunas serão ordenadas alfabeticamente, já que o que esta sendo retornado é um texto, então abril seria o primeiro mês a ser exibido, em seguida agosto, em seguida dezembro…
Mesmo que você concatenasse o campo Month com a fórmula acima não resolveria, pois o número da dimensão Month seria transformado em texto e a ordenação das colunas iria bagunçar tudo:
A solução é transformar o dado da dimensão Month no formato de data.
Acompanhe a lógica: Eu tenho o mês e o ano, para ter uma data completa só falta o dia, porém eu não estou na granularidade de dia, estou na granularidade de mês, portanto o dia pode ser uma constante, por exemplo o dia 1º. Através da função "ToDate" que em português foi traduzido carinhosamente para "AtéHoje" (risos…) eu posso montar um texto formatado e converter em data.
Vamos criar uma variável chamada "Month Date", o código dela será:
=AtéHoje([Year]+"."+[Month]+".1";"yyyy.M.d")
Obs: Mesmo com o BO em inglês, sempre que formos abordar formato de data nos códigos deve ser considerado em inglês;
Olha só como fica, agora a ordenação é por data, pois o dado retornado é do tipo data, portanto a ordenação ficará: 01/01/04, 01/02/04, 01/03/04…
Agora ficou fácil, precisamos apenas formatar a exibição da data, de "dd/mm/aa" para "mmmm", ou seja, ao invés de "01/01/04" para "janeiro". Para formatar a data:
a) Botão direito sobre a célula;
b) Escolher a opção "Formatar número…";
c) Na lista da esquerda, selecionar a opção "Data/Hora";
d) Na lista da direita de formatos, selecionar o formato "terça-feira, 21 de setembro de 2004";
e) Clicar no botão "Personalizar", você vai personalizar esse formato;
f) No campo "Data/Hora" apagar todo o texto e deixar apenas o seguinte texto: mmmm. Para você ter certeza que deu certo, no campo "Amostra" deve aparecer o nome do mês formatado.
g) Clique em adicionar, na tela seguinte clique em Ok;
Observe que agora a ordenação não é alfabética, pois ela continua sendo pelo tipo de dado, que é do tipo Data, o que fizemos foi apenas uma máscara para mostrar o nome do mês daquela data:
Agora sim ficou apresentável, mas ainda não esta 100%. Nos posts seguintes vou apresentar mais algumas formatações.
Dicas para construção de consultas BEx eficientes para SAP BusinessObjects # Parte 1 Formatando uma tabela cruzada no Webi # Parte2
2 thoughts on "Formatando uma tabela cruzada no Webi # Parte1"
quando eu uso a função =AtéHoje([Year]+"."+[Month]+".1″;"yyyy.M.d") dá #ERRO. Tem alguma dica para mim?