BusinessObjects

O blog do Consultor BO

Formatando uma tabela cruzada no Webi # Parte1

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:

Consulta:

  • Universo: eFashion
  • Dimensões: Year, Month, State, City
  • Métricas: Sales revenue
  • Condições: Year = 2004; State = California, Texas e New York

Consulta eFashion

Tabela de referência cruzada:

  • Linhas: State, City
  • Colunas: Month
  • Centro: Sales revenue

Tabela 1

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…
Tabela 2

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:
Tabela 3

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…
Tabela 4

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:
Tabela 5

 

Agora sim ficou apresentável, mas ainda não esta 100%. Nos posts seguintes vou apresentar mais algumas formatações.

, , , ,

2 thoughts on “Formatando uma tabela cruzada no Webi # Parte1

  • Monica disse:

    Olá,
    quando eu uso a função =AtéHoje([Year]+”.”+[Month]+”.1″;”yyyy.M.d”) dá #ERRO. Tem alguma dica para mim?

    • Gustavo Henrique Oliveira disse:

      Olá Monica, boas lembranças do pessoal ai de BH, da PRODABEL, se tiver contato com Felipe Carbonaro, Sabrina, João Felipe, mande um abraço para eles. Aparentemente sua fórmula esta com alguns caracteres errados. Esta com +”.1′ e deveria ser +”.1″. Notei outra coisa também, você esta utilizando as aspas duplas diferentes (”), que é o caractere ascii 8221, o caractere correto de aspas duplas é (“), que é o ascii 34. Não sei como você utilizou esse caractere 8221, talvez seja a cópia do que esta no post, porém dependendo do navegado pode ocorrer alterações nesses tipos de caracteres, eu testei com o Google Chrome e Internet Explorer e a cópia foi correta. Recomendo você literalmente digitar essa fórmula no webi. Outro ponto a observar é o idioma do BI Launch Pad (ou InfoView), o meu idioma é Português do Brasil, ou seja, a fórmula é AtéHoje(), porém se você estiver com o BI Launch Pad em inglês, a fórmula passa a ser ToDate().

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *