Pesquisar este blog

quarta-feira, 4 de dezembro de 2013

Aloha!

Estou abrindo uma nova vertente no blog, dessa vez vou falar de layout.
Na verdade vou dar uma dica de como fazer uma coisa bem simples, que dá um "up" no gráfico.

1 - Talvez você já tenha visto algum gráfico de linha.
2 - Talvez você já tenha visto algum gráfico de linha com marcador.
3 - Talvez você já tenha visto algum gráfico de linha. com marcador "furado".

O primeiro é mole de fazer no Cognos, é o gráfico padrão
O segundo também é fácil, é um dos modelos padrão ou simplesmente modifique o tipo de linha para linha com marcadores.
Agora o segundo é uma incógnita, eu nunca havia visto um no Cognos, mas vi em outros lugares e fiquei pensando se era possível.

Acontece que é, veja como fica abaixo:

Claro que não está grande coisa, fiz só para ter ima ideia.

Agora vejamos como fazer.
É muito simples

Nas propriedades da paleta defina o marcador como circulo:
 
 
Depois, Clique na cor do marcador para editar as propriedades.
Faça dessa forma:


 

 
Tipo de preenchimento: Matriz radial de linha
Cores: Sempre da cor do fundo ou transparente para a cor da linha
Posição do foco: X1 40%, X2 50%, Y1 60% e Y2 50%.
A única coisa que pode variar é o Raio do foco.
No exemplo no começo do post, ficou assim: interna 3px, externa 4px.
 
Por fim, falta apenas definir o tamanho do marcador.
Volte à tela da paleta de cores e clique na guia propriedades:
 
 
Defina como 10pt.
 
Depois de fazer isso você pode ir alternando para adequar melhor ao seu relatório mas já é um começo.
 
Abs


quinta-feira, 3 de outubro de 2013

Cognos 10.2.1 FP1

E mais uma dica rápida!

Sai acho que mês passado o FP1 da versão 10.2.1, digamos que é um release novo porque é maior que o 10.2.1.

Vale a pena, tem muita correção e coisas novas interessante.

!!!!

Cognos MDX Parte 1

Eis que vos falo novamente... enquanto aguardo meu GTA Online funcionar.

Recentemente passei por um aperto e tanto e  resolvi fazer minha contribuição semestral a comunidade que mexe com esse trem chamado Cognos.

Hoje vamos falar um pouco de MDX, básico.
Muitos já devem ter se deparado com o desenvolvimento de relatórios sobre cubos, no meu caso o infame Dynamic Cube, e como já era de se esperar, nunca é fácil, sempre difícil.

Então a linguagem que o tal cubo utiliza é o MDX, e se você tentar fazer um relatório sobre cubo com o conceito de desenvolvimento relacional você está perdido.

Isso acontece porque MDX é uma linguagem que faz um de hierarquias e buscas em profundidade, diferente do SQL que faz buscas lineares de profundidade 0.

Isso posto, vamos a dicas!

Para fazer um filtro de informação, procure sempre utilizar um slicer, veja exemplo abaixo:

Filtro simples obrigatório:
[Cubo];[Dimensão].[Hierarquia]->?p_parametro?

Filtro múltiplo obrigatório:
set([Cubo];[Dimensão].[Hierarquia]->?p_parametro?)

Filtro simples opcional:
#prompt('p_parametro';'memberuniquename';'rootMember([Cubo];[Dimensão].[Hierarquia])')#

Filtro múltiplo opcional:
#prompt('p_parametro';'memberuniquename';'rootMember([Cubo];[Dimensão].[Hierarquia])';'set(';'';')')#

Isso vai resolver a maior parte dos problemas de filtragem que você possa ter, mas se você precisar fazer a passagem de um parâmetro para um relatório que utiliza 2 cubos você encontrará um problema. Descobri como resolve-lo na sorte, depois explico, é um pouco mais complicado mas funciona.

Agora fazer dizer que você precisa fazer um relatório acumulado no período:
o seu slicer ficaria +/- assim:
head(children([Meu Cubo];[Tempo].[Ano]->?p_ano?);?p_mes?)
Nesse caso ele traz os ?p_mes? primeiros membros filhos de ?p_ano?.


Caso queira utilizar a mesma lógica para mês é só muda de head para item:
item(children([Cubo];[Tempo].[Ano]->?p_ano?);?p_mes?)

Bom isso é o começo, agora vamos ver como fazer um case, coisa muito simples no modo relacional, mas em cubo é um caos.
Se você fizer um simples case vai ter graves problemas de performance, então minha sugestão é a seguinte:
vamos agrupar SP, MG, RJ e ES como Sudeste e os demais e outros:
set(
member( total(currentMeasure within set filter([Cubo].[Estados].[Estados].[Estados]; caption([Cubo].[Estados].[Estados].[Estados]) in ('SP';'MG';'RJ';'ES'))); 'membro1'; 'Sudeste'; [Cubo].[Estados].[Estados]);
member( total(currentMeasure within set filter([Cubo].[Estados].[Estados].[Estados]; caption([Cubo].[Estados].[Estados].[Estados]) not in ('SP';'MG';'RJ';'ES'))); 'membro2'; 'Outros'; [Cubo].[Estados].[Estados]);
)

Fácil né?
Agora um sugestão muito útil, image que você quer trazer o TOP 10, moleza:
topCount([Cubo].[Dimensão].[Hierarquia].[Nível]; 10; [Cubo].[Medidas].[Medida])

Mole mesmo, mas agora você que ranquear esses caras, então faça assim:

Primeiro escolha pelo que vai ranquear, digamos que é pelo ano, e vamos imaginar que você já faz os Data itens.
Rank(tuple([Medida];[Ano]) within set([Top 10]))

Acho que isso já está bem complicado por hoje, mas logo volto com mais algumas dicas!!

Qualquer dúvida já sabem.

[[]]'s

quinta-feira, 2 de maio de 2013

Javascript Manipulando Prompts - Parte 1

Algumas vezes é ncessário colocar uma opção custom no prompt, um label.
Até a versão 8 não existia um modo simples, era necessário a utilização de javascript para manipular os prompts.

Na versão 10 já existe uma propriedade para isso, entretanto se você ainda precisa manipular os prompts para, para exemplo, remover uma opção, o javascript ainda é útil.

Abaixo segue um codigo de minha autoria, como basa no knowledge base da IBM.

Essas funções servem para as versões 8.2, 8.4.1 e 10.1, pelo menos foi onde testei. Deve servir para a 8.3 também.

A primeira função captura os formularios de tratamento do Cognos, esses formularios contem todas as informações do relatório, então seria possivel acessar tudo do relatório, desde que você saiba o caminho.

A segunda função retorna um objeto com a entidade do prompt, de acordo com o parametro.
O argumento name deve ser o nome do prompt.
Essa função retorna prompts do tipo dropdown, list, e text field.

function getCognosParams(){
 return var fW = typeof getFormWarpRequest == "function" ? getFormWarpRequest() : document.forms["formWarpRequest"];
}

function getPromptByName(name){
 var prompt = eval("getCognosParams()._oLstChoices" + name);
 if(prompt == null || prompt == undefined){
  prompt = eval("getCognosParams()._textEditBox" + name);
  if(prompt == null || prompt == undefined){
   window.alert("Prompt: " + name + " incorreto.");
  }
 }
 return prompt;
}

quarta-feira, 1 de maio de 2013

Dica da semana - Cognos 10.1.1 FP2

Mais um post hoje hein!!!

Então, passei pelo site da IBM esse dias e vi que tem um Fix Pack para a versão 10.1.1.

É o novo FP2, lançado em 26/03 se não me engano.

Ainda não testei mas parece que resolve uma pancada de erros, alguns muito inúteis, outros fazem sentido.

Se alguem aplicou o patch e quiser me dizer o que achou eu posto aqui!

[[]]'s

Cognos Mobile - Erro 1111 ao enviar relatório para dispositivo móvel

E ai povo, faz um tempo que não apareço por aqui.

Mas recebi uns e-mails nos últimos dias e resolvi dar uma atualizada nesse trem.

Pois bem, essa semana mesmo passei pelo seguinte problema:

Versão Cognos 10.1.1 FP1

Preciso rodar um Job que gera cerca de 500 saidas para IPADs, esse job já roda a algum tempo e até semana passada demorava cerca de 3 horas, mas saia sem nenhum problema.

Então fizemos algumas alterações nele e de repente ele começou a apresentar um erro(que vou falar em outro post), a questão era de overload no banco então decidimos montar uma tabela para sumarizar mais os dados, deixando menos trabalho para o Cognos.

Até ai tudo bem né? Não!!
O relatório passou a rodar em 40 minutos, porém... apresentou por diversas vezes o erro:
'The Mobile service has
caught an exception: com.cognos.mobile.common.CMException:
(code 1111)'

Então fiz o que todo ser humano razoavel faz, joguei isso ai no google e por algum mistério da humanidade realmente veio algo da IBM.

Existe um chamado de alguem que teve esse problema, e como em 99% da vezes a resposta da IBM é... mude para a próxima versão... muito útil.

Não me conformo muito com essas respostas então tentei rearranjar o job de modo a não deixar muitos processos simultâneos, veja que são 500 saidas.

Felizmente apenas isso resolveu o problema, o job leva cerca de 1 hora para rodar e sem nenhum erro.

Resumo
Erro erro é causado(também) por um excesso de concorrência no próprio Cognos, diminuindo o overload na aplicação resolveu o problema.

terça-feira, 13 de novembro de 2012

Cognos 10.2

Enfim um post nesse blog as moscas!!

Já faz algum tempo, mas foi por um bom motivo, acabamos de implementar um projeto de Cognos Mobile, muito interessante e incrivelmente... FUNCIONA!!!

Mas isso ai fica pra outro post, nesse ano ainda, espero!

Então a IBM resoulveu lançar mais uma versão do Cognos... 10.2!

O que tem essa versão afinal?

Algumas coisas melhores, e quase nada novo, vale a pena? Não sei dizer, até o momento a 10.1.1 funciona e tem seus bugs sabidos, na 10.2 os bugs ainda estão por vir.

Então vamos a novidades dessa versão:

Dynamic Cubes e só!
Embora seja apenas uma ferramenta nova, possui potêncial para as demandas que sestão por vir, o tal do BIG DATA, por eexemplo.
Nessa ferramente, que possui modeler próprio - Cube Designer, você consegue fazer um mapeamento ao estilo DMR do modelo relacional, porém, dessa vez a modelagem tem a intensão de fazer com que a maior parte dos dados esteja em memória.

É quase um cubo virtual do TM1, de fato nessa ferramenta a IBM resolveu pegar o que há de melhor das outras: TM1 engine, Cube Modeling e DMR Cache.

Assim, temoas uma ferramenta que precisa de um baita servidor, mas possúi um potêncial enorme para grandes volumes de dados.

Obs.: Não queira utilizar isso para qualquer coisa, tudo tem sua utilizadade específíca.

Agora as melhorias/mudanças:
Sabe o DMR... agora chama OOR - Olap Over Relational
Sabe o Business Insight... agora chama Workspace
A versão 2007 realmente funcionar, não faz mais aquelas quebras em 65 mil linhas
Incluída a aba macros no Report Studio
Repeater para Active Report
iOS Push Notifications para Mobile
Estrutura Multi-Tenant
Style Management Utility - Essa é boa, agora você pode gerenciar o Skin do Cognos via Front End
Freeze Header - Possibilita congela o cabeçalho com o clique do botão direito do mouse, nativo em listas
Compatibilidade de Chrome e Safari

E por hora é isso que eu vi, se alguem quiser complementar com algo, avonts!!

[[]]'s