Essa é importada daqui daqui.
Formatar a data em um gráfico, geralmente no eixo X.
O ReportStudio permite que você formate as exibição de dadas, de modo que você não precise fazer modificações em nível de consulta, apenas layout.
Acontece que para isso, é necessário uma pequena mudança que não é explicada em lugar algum.
Mude a propriedade Tipo de origem (Source Type) de Legenda do Membro(Member Caption) para Valor do Item de Dados(Data Item Value) e voilá, agora a formatação funciona!!
Espero que ajude!
Blog do Bueno onde você encontra informação sobre Big Data, Analytics, Master Data, e como essa coisas se integram.
Pesquisar este blog
quinta-feira, 26 de janeiro de 2012
quinta-feira, 19 de janeiro de 2012
Cognos Determinants
Como eu havia prometido mes passado, vou fazer uma explicação de como é e pra quê serve esse trem,
Pela pela IBM:
Determinant é um modo de prover controle sobre granularidade.
Quando utilizar:
Pela pela IBM:
Determinant é um modo de prover controle sobre granularidade.
Quando utilizar:
- Joins in multiplos níveis de granularidade em uma única query.
Um exemplo bastante comum é o de uma Dimensão de Tempo. As vezes precisamos fazer joins com fatos em nível dia e outras em nível mês. Joins em níveis multiplos podem gerar informações duplicada, pois no caso de dia e mês a informações de mês se repetirá para cada dia deste. - Campos BLOB em query.
Consultas sobre campos BLOB necessitam de informações que pode ser adicionadas nos determinants.
Exemplo:
| Ano | Mes | Dia | Data |
| 2011 | 05 | 2011-05-01 | 1 de Maio de 2011 |
| 2011 | 05 | 2011-05-02 | 2 de Maio de 2011 |
Vamos supor que preciso trazer informações da Fato Notas Fiscal, que é diária, nesse caso meu join seria pela própria data ou ID da dimensão.
Numa segunda consulta preciso trazer informações da Fato de Orçamento, está é mensal, logo esse join seria por Ano + Mes.
Agora vamos imaginar o caso real, preciso ver se minhas vendas estão atingindo as metas de orçamento, logo vou juntar duas fatos numa consulta, mas cada uma tem uma nivel de granulariade diferente, como impedir a duplicação dos dados?
Podemos criar os seguintes determinants.
| Name | Key | Attributes | Uniquely Identified | Group By |
| Ano | Ano | Nenhum | Não | Sim |
| Mes | Ano, Mes | Nenhum | Não | Sim |
| Dia | Dia | Data | Sim | Não |
*É importante lembrar que para os determinantes funcionarem é preciso ter um join nos campos deste.
Então temos 3 determinants, um para cada nível da dimensão. Não é necessário criar um determinante para cada nível das dimensões, apenas para os que fazem joins.
Repare que no nível mês, não temos um campo que identifica os registros unicamente, então temos que colocar o Ano e Mês como chave.
Na prática o determinante criará um uma sub-consulta na dimensão agrupando os dados pelos campos chave e utilizando a função MIN nos campos atributos.
Isso reolve o problema.
Como sempre, em caso de dúvidas, e-mail.!!
Repare que no nível mês, não temos um campo que identifica os registros unicamente, então temos que colocar o Ano e Mês como chave.
Na prática o determinante criará um uma sub-consulta na dimensão agrupando os dados pelos campos chave e utilizando a função MIN nos campos atributos.
Isso reolve o problema.
Como sempre, em caso de dúvidas, e-mail.!!
segunda-feira, 12 de dezembro de 2011
Multi-Version Coexistence Cognos 10
Você sabia que é possível configurar 2 ambientes Cognos a partir da versão 10.1?
Com isso você pode criar um projeto de migração transparente ao usuário.
A versão 10.1 se torna a padrão mas ao clicar em links pré-configurados, o usuário é levado a versão anterior sem que perceba.
Cognos 10 Multi-Version Coexistence suporta as versões Cognos 8.3.x, 8.4.x e 8.4.1.
A versão 8.4.1 suporta nativamente, as demais versões precisam do último FP disponível.
Como fazer:
No seu portal versão 10
1 - Iniciar->IBM Cognos Administration
2 - Clique na aba Configuration.
3 - Clique na em Set Properties.
4 - Clique na outra aba Configuration.
5 - Clique em Environment->Advanced Settings .
6 - Adicione as respectivas linhas.
No seu portal versão 10
1 - Iniciar->IBM Cognos Administration
2 - Clique na aba Configuration.
3 - Clique na em Set Properties.
4 - Clique na outra aba Configuration.
5 - Clique em Environment->Advanced Settings .
6 - Adicione as respectivas linhas.
*IMPORTANTE, AMBOS OS SERVIÇOS DEVEM ESTAR CONFIGURADOS NO MESMO DOMÍNIO E ESTE DEVE ESTAR INCLUÍDO NA POLÍTICA DE SEGURANÇA DE FIREWALL DO COGNOS, do contrário um erro javascript poderá aparecer ou será informado um erro do CAF.
*Obs, não consegui fazer funcionar na versão 10.1.1 x64 com 8.4.1 x32.
Aqui o How-to da IBM.
http://www-01.ibm.com/support/docview.wss?uid=swg21459041
Aqui tem um exemplo de como fica.
http://www.youtube.com/watch?v=kD7J5fZY-n8
Com isso você pode criar um projeto de migração transparente ao usuário.
A versão 10.1 se torna a padrão mas ao clicar em links pré-configurados, o usuário é levado a versão anterior sem que perceba.
Cognos 10 Multi-Version Coexistence suporta as versões Cognos 8.3.x, 8.4.x e 8.4.1.
A versão 8.4.1 suporta nativamente, as demais versões precisam do último FP disponível.
Como fazer:
No seu portal versão 10
1 - Iniciar->IBM Cognos Administration
2 - Clique na aba Configuration.
3 - Clique na em Set Properties.
4 - Clique na outra aba Configuration.
5 - Clique em Environment->Advanced Settings .
6 - Adicione as respectivas linhas.
Variable
|
Value
|
| MVC_remoteWebContent | http://<hostname>.ibm.com/<c8alias> |
| MVC_remoteGateway | http://<hostname>.ibm.com/<c8alias>/cgi-bin/cognos.cgi |
| MVC_domain | ibm.com |
No seu portal versão 10
1 - Iniciar->IBM Cognos Administration
2 - Clique na aba Configuration.
3 - Clique na em Set Properties.
4 - Clique na outra aba Configuration.
5 - Clique em Environment->Advanced Settings .
6 - Adicione as respectivas linhas.
Variable
|
Value
|
| MVC_gateway | http://<hostname>.ibm.com/<c10alias>/cgi-bin/cognos.cgi |
| MVC_domain | ibm.com |
*IMPORTANTE, AMBOS OS SERVIÇOS DEVEM ESTAR CONFIGURADOS NO MESMO DOMÍNIO E ESTE DEVE ESTAR INCLUÍDO NA POLÍTICA DE SEGURANÇA DE FIREWALL DO COGNOS, do contrário um erro javascript poderá aparecer ou será informado um erro do CAF.
*Obs, não consegui fazer funcionar na versão 10.1.1 x64 com 8.4.1 x32.
Aqui o How-to da IBM.
http://www-01.ibm.com/support/docview.wss?uid=swg21459041
Aqui tem um exemplo de como fica.
http://www.youtube.com/watch?v=kD7J5fZY-n8
terça-feira, 6 de dezembro de 2011
Dica da semana - Cálculo Incorreto
É isso aí, voltei, depois de umas férias e uma ripa no trabalho.
A dica do dia fica pra uma propriedade muito útil embora pouco conhecida dos Data Itens, o famoso Solve Order.
As vezes precisamos fazer uma série de cálculos e apresentá-los numa lista ou crosstab, mas por mais que tentamos a porcaria do valor sempre vem errado.
Me lembrei disso ontem enquanto via um relatório que aparentemente continha todas as agregações definidas corretamente, mas os rollups estavam todos errados.
Esse tipo de problema aparece geralmente em crosstabs, pois podemos colocar qualquer coisa em qualquer lugar.
Procedimento muito simples, veririque se as agregações estão corretas, depois basta definir nos Data Itens valores em sequência na mesma ordem dos cálculos.
Obs.: Por padrão Aggregate Functions utilizam Solve Order 1, e dados de Query utilizam 0 ou nada.
Dúvidas? Complicado? Quer adicionar algo? E-mail-me!
Próximo post malditos Determinants!!!!
A dica do dia fica pra uma propriedade muito útil embora pouco conhecida dos Data Itens, o famoso Solve Order.
As vezes precisamos fazer uma série de cálculos e apresentá-los numa lista ou crosstab, mas por mais que tentamos a porcaria do valor sempre vem errado.
Me lembrei disso ontem enquanto via um relatório que aparentemente continha todas as agregações definidas corretamente, mas os rollups estavam todos errados.
Esse tipo de problema aparece geralmente em crosstabs, pois podemos colocar qualquer coisa em qualquer lugar.
Procedimento muito simples, veririque se as agregações estão corretas, depois basta definir nos Data Itens valores em sequência na mesma ordem dos cálculos.
Obs.: Por padrão Aggregate Functions utilizam Solve Order 1, e dados de Query utilizam 0 ou nada.
Dúvidas? Complicado? Quer adicionar algo? E-mail-me!
Próximo post malditos Determinants!!!!
sexta-feira, 7 de outubro de 2011
Javascript Expand and Colapse - Agrupar e Desagrupar - Part 2
Eu sei, demorei pacas pra por esse post, vida corrida!!
Como disse antes esse é um exemplo de agrupamento possível, pode-se fazer muitos níveis, aqui vamos fazer apenas 1.
HTML 1: <script type="text/javascript"> A função do post anterior</script>
HTML 2: <span id="tbl1">
HTML 3:
<img src="../images/PropertyGroup_plus.gif" onclick="ExpandCollapse(this);" style="cursor:hand; vertical-align:middle; margin-right:2px"/>
HTML 4: </span>
HTML 5: <script type="text/javascript">StartHidden('tbl1');</script>
3 - E por fim acerte o padding(espaçamento) no Nível 1 em 20 px.

Essa função só server para grupos superiores, ou seja totais na parte de cima do relatório, para totais na parte inferior é necessário adequar a função, se precisar de ajuda me manda um e-mail.
Boa noite a todos.
Como disse antes esse é um exemplo de agrupamento possível, pode-se fazer muitos níveis, aqui vamos fazer apenas 1.
1 - Construa uma query com essa cara.
Só dois níveis nesse exemplo.
Repare que existem 5 HTML Itens, disponha-os exatamente da mesma forma.
Agora vamos ao conteúdo deles:HTML 1: <script type="text/javascript"> A função do post anterior</script>
HTML 2: <span id="tbl1">
HTML 3:
<img src="../images/PropertyGroup_plus.gif" onclick="ExpandCollapse(this);" style="cursor:hand; vertical-align:middle; margin-right:2px"/>
HTML 4: </span>
HTML 5: <script type="text/javascript">StartHidden('tbl1');</script>
3 - E por fim acerte o padding(espaçamento) no Nível 1 em 20 px.
Com isso está pronto, rode e veja o que acontece!
Caso queira inserir mais níveis, faça o padding incremental, mas sempre deixe o último nível(nesse caso o 2) sem padding.
Nível 3 normal
Nível 2 20px
Nível 1 40px
Essa função só server para grupos superiores, ou seja totais na parte de cima do relatório, para totais na parte inferior é necessário adequar a função, se precisar de ajuda me manda um e-mail.
Boa noite a todos.
terça-feira, 20 de setembro de 2011
Javascript Expand and Colapse - Agrupar e Desagrupar - Part 1
Esse post já está preparado tem um tempo, mas não ficou muito bom.
Outra funcionalidade muito solicitada é o famoso "Agrupar" do Excel, que facilita a visão diminuindo a poluição no relatório, pois ele agrupa varias linhas, e expande quando solicitado.
É como a estrutura de diretório do Windows, clique no "+"(mais) e a árvore abre.
Pois bem, existe um modo de se fazer isso no Cognos graças ao Mr. Javascript, abençoado seja o inventor.
A utilização é muito simples, e a lógica aplicada também, então vamos a explicação técnica.
No HTML o elemento TABLE possui os elementos TR, que são as linhas da tabela - table row.
Esses elementos TR por sua vez possuem um atributo chamado STYLE, o qual possui uma propriedade chamada DISPLAY.
table.tr.style.display, ok?
Essa propriedade define se um elemento estará visível ou não na tela, apesar de ter sido carregado.
Então DISPLAY = 'NONE' significa que o elemento estará oculto e DISPLAY = 'BLOCK'... visível.
A função consiste basicamente em ler todas as linhas da tabela e atribuir a propriedade não visível ou visivel, isso dependerá de uma variável do preenchimento definido na variavél INDENT_SIZE.
A função percorre todas as linhas abaixo da linha clicada verificando se existe uma imagem dentro da primeira célula, se tiver significa que é hora de para. Uma vez verificada a célula, a linha é trocada de status, se visível então invisível e a imagem muda de IMG_UP/DOWN para IMG_DOWN/UP.
Logo abaixo você vai encontrar os itens necessários para poder criar um relatório com Expand/Collapse.
No próximo post vou fazer uma demonostração de utilização.
------>>>> Código da função
Outra funcionalidade muito solicitada é o famoso "Agrupar" do Excel, que facilita a visão diminuindo a poluição no relatório, pois ele agrupa varias linhas, e expande quando solicitado.
É como a estrutura de diretório do Windows, clique no "+"(mais) e a árvore abre.
Pois bem, existe um modo de se fazer isso no Cognos graças ao Mr. Javascript, abençoado seja o inventor.
A utilização é muito simples, e a lógica aplicada também, então vamos a explicação técnica.
No HTML o elemento TABLE possui os elementos TR, que são as linhas da tabela - table row.
Esses elementos TR por sua vez possuem um atributo chamado STYLE, o qual possui uma propriedade chamada DISPLAY.
table.tr.style.display, ok?
Essa propriedade define se um elemento estará visível ou não na tela, apesar de ter sido carregado.
Então DISPLAY = 'NONE' significa que o elemento estará oculto e DISPLAY = 'BLOCK'... visível.
A função consiste basicamente em ler todas as linhas da tabela e atribuir a propriedade não visível ou visivel, isso dependerá de uma variável do preenchimento definido na variavél INDENT_SIZE.
A função percorre todas as linhas abaixo da linha clicada verificando se existe uma imagem dentro da primeira célula, se tiver significa que é hora de para. Uma vez verificada a célula, a linha é trocada de status, se visível então invisível e a imagem muda de IMG_UP/DOWN para IMG_DOWN/UP.
Logo abaixo você vai encontrar os itens necessários para poder criar um relatório com Expand/Collapse.
No próximo post vou fazer uma demonostração de utilização.
------>>>> Código da função
// These settings you can change to modify the report processing
var UOM="px"; // Set to unit of measure for padding
var INDENT_SIZE=20; // Set to indent padding step size. i.e setting to 20 means the padding steps are 20,40,60,80, etc
var UOM_SIZE = UOM.length;
var IMG_PATH = "../images/";
var IMG_NAME = "PropertyGroup_";
var IMG_UP_SUFIX = "plus";
var IMG_DOWN_SUFIX = "minus";
var IMG_EXTENSION = ".gif";
function stripTrailing(string,num) {
if ( string == "") {return parseInt(0);} else {return parseInt(string.substring(0,string.length-num));}
}
function ExpandCollapse( el ) {
// Grab the ROW that was clicked and the TABLE that contains it
var tr;
var tbl;
// Set the variables depending on browser (Firefox or others)
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
tr = el.parentNode.parentNode;
tbl = tr.parentNode.parentNode;
}
else{
tr = el.parentElement.parentElement;
tbl = tr.parentElement.parentElement;
}
// Set the alternating display values for hiding/showing the row
var sDisplay = ( el.src.indexOf( IMG_DOWN_SUFIX ) == -1 ) ? "" : "none";
var sDisplayReverse = ( el.src.indexOf( IMG_DOWN_SUFIX ) == -1 ) ? "none" : "";
//Switch the icon for the clicked row
el.src = IMG_PATH + IMG_NAME + ( el.src.indexOf( IMG_DOWN_SUFIX ) == -1 ? IMG_DOWN_SUFIX : IMG_UP_SUFIX ) + IMG_EXTENSION;
// Starting with the row below the clicked row, start checking each row
for ( var i = tr.rowIndex + 1; i < tbl.rows.length; i++ )
{
// Set the Current row indicator nad the left padding value
var trCurrent = tbl.rows[i];
var trCurrentLeft = trCurrent.cells[0].style.paddingLeft;
// if the current row contains an IMG in it, it's a clickable level and we either have to stop processing,
// or reset the icons to a + as it's being collapsed
if ( trCurrent.cells[0].firstChild && trCurrent.cells[0].getElementsByTagName("IMG").length )
{
// If the current row is at the same level or above in the tree, then stop processing,
// else reset all the signs below it, essentially collapsing all branches underneath the one that is beig collapsed.
if ( stripTrailing(trCurrentLeft , UOM_SIZE) <= stripTrailing(tr.cells[0].style.paddingLeft , UOM_SIZE) )
{ break; }
else
{
if (el.src.indexOf( IMG_DOWN_SUFIX ) == -1 )
{
trCurrent.cells[0].getElementsByTagName("IMG").item(0).src = IMG_PATH + IMG_NAME + IMG_UP_SUFIX + IMG_EXTENSION;
}
}
}
// Now, we determine if the row should be hidden or shown.
if ( eval(stripTrailing(tr.cells[0].style.paddingLeft, UOM_SIZE) + INDENT_SIZE) < stripTrailing(trCurrentLeft, UOM_SIZE) && el.src.indexOf( IMG_DOWN_SUFIX ) >0 )
{
trCurrent.style.display = sDisplayReverse;
} else
{
trCurrent.style.display = sDisplay;
}
}
}
function StartHidden(el){
//var tbl=el.parentElement.parentElement.parentElement.parentElement;
var tbl = document.getElementById(el).getElementsByTagName('table')[0];
for (var i = 0; i < tbl.rows.length; i++)
{
var trCurrent = tbl.rows[i];
if (trCurrent.cells[0].style.paddingLeft.indexOf(UOM) > -1){
trCurrent.style.display = "none";
}
else{
trCurrent.style.display = "block";
}
}
}
function StartHiddenSome(el, noHide){
var nh = noHide.split(';');
var nhn = new Array();
for(var i = 0; i < nh.length; i++){
nhn[i] = nh[i].split(',');
}
StartHidden(el);
if(nhn.length > 0){
var tbl = document.getElementById(el).getElementsByTagName('table')[0];
for(var k = 0; k < nhn[0].length; k++){
var stop = false;
for (var i = 0; i < tbl.rows.length; i++){
var trCurrent = tbl.rows[i];
if(stripTrailing(trCurrent.cells[0].style.paddingLeft, UOM_SIZE) == INDENT_SIZE*k || (trCurrent.cells[0].style.paddingLeft.indexOf(UOM) == -1 && k ==0)){
for(var j = 0; j < trCurrent.cells[0].children.length; j++){
if(trCurrent.cells[0].children[j] != null && trCurrent.cells[0].children[j] != undefined){
for(var kk = 0; kk < nhn.length; kk++){
if(trCurrent.cells[0].children[j].innerHTML == nhn[kk][k] && nhn[kk][k] != ''){
stop = true;
var IMG = trCurrent.cells[0].firstChild;
if(IMG.src != null && IMG.src != undefined)
IMG.src = IMG_PATH + IMG_NAME + (IMG.src.indexOf( IMG_DOWN_SUFIX ) == -1 ? IMG_DOWN_SUFIX : IMG_UP_SUFIX ) + IMG_EXTENSION
break;
}else{
stop = false;
}
}
if(stop) break;
}
}
}
if (stripTrailing(trCurrent.cells[0].style.paddingLeft, UOM_SIZE) == INDENT_SIZE*(k+1) && stop){
trCurrent.style.display = "block";
}
}
}
}
}
var UOM="px"; // Set to unit of measure for padding
var INDENT_SIZE=20; // Set to indent padding step size. i.e setting to 20 means the padding steps are 20,40,60,80, etc
var UOM_SIZE = UOM.length;
var IMG_PATH = "../images/";
var IMG_NAME = "PropertyGroup_";
var IMG_UP_SUFIX = "plus";
var IMG_DOWN_SUFIX = "minus";
var IMG_EXTENSION = ".gif";
function stripTrailing(string,num) {
if ( string == "") {return parseInt(0);} else {return parseInt(string.substring(0,string.length-num));}
}
function ExpandCollapse( el ) {
// Grab the ROW that was clicked and the TABLE that contains it
var tr;
var tbl;
// Set the variables depending on browser (Firefox or others)
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){
tr = el.parentNode.parentNode;
tbl = tr.parentNode.parentNode;
}
else{
tr = el.parentElement.parentElement;
tbl = tr.parentElement.parentElement;
}
// Set the alternating display values for hiding/showing the row
var sDisplay = ( el.src.indexOf( IMG_DOWN_SUFIX ) == -1 ) ? "" : "none";
var sDisplayReverse = ( el.src.indexOf( IMG_DOWN_SUFIX ) == -1 ) ? "none" : "";
//Switch the icon for the clicked row
el.src = IMG_PATH + IMG_NAME + ( el.src.indexOf( IMG_DOWN_SUFIX ) == -1 ? IMG_DOWN_SUFIX : IMG_UP_SUFIX ) + IMG_EXTENSION;
// Starting with the row below the clicked row, start checking each row
for ( var i = tr.rowIndex + 1; i < tbl.rows.length; i++ )
{
// Set the Current row indicator nad the left padding value
var trCurrent = tbl.rows[i];
var trCurrentLeft = trCurrent.cells[0].style.paddingLeft;
// if the current row contains an IMG in it, it's a clickable level and we either have to stop processing,
// or reset the icons to a + as it's being collapsed
if ( trCurrent.cells[0].firstChild && trCurrent.cells[0].getElementsByTagName("IMG").length )
{
// If the current row is at the same level or above in the tree, then stop processing,
// else reset all the signs below it, essentially collapsing all branches underneath the one that is beig collapsed.
if ( stripTrailing(trCurrentLeft , UOM_SIZE) <= stripTrailing(tr.cells[0].style.paddingLeft , UOM_SIZE) )
{ break; }
else
{
if (el.src.indexOf( IMG_DOWN_SUFIX ) == -1 )
{
trCurrent.cells[0].getElementsByTagName("IMG").item(0).src = IMG_PATH + IMG_NAME + IMG_UP_SUFIX + IMG_EXTENSION;
}
}
}
// Now, we determine if the row should be hidden or shown.
if ( eval(stripTrailing(tr.cells[0].style.paddingLeft, UOM_SIZE) + INDENT_SIZE) < stripTrailing(trCurrentLeft, UOM_SIZE) && el.src.indexOf( IMG_DOWN_SUFIX ) >0 )
{
trCurrent.style.display = sDisplayReverse;
} else
{
trCurrent.style.display = sDisplay;
}
}
}
function StartHidden(el){
//var tbl=el.parentElement.parentElement.parentElement.parentElement;
var tbl = document.getElementById(el).getElementsByTagName('table')[0];
for (var i = 0; i < tbl.rows.length; i++)
{
var trCurrent = tbl.rows[i];
if (trCurrent.cells[0].style.paddingLeft.indexOf(UOM) > -1){
trCurrent.style.display = "none";
}
else{
trCurrent.style.display = "block";
}
}
}
function StartHiddenSome(el, noHide){
var nh = noHide.split(';');
var nhn = new Array();
for(var i = 0; i < nh.length; i++){
nhn[i] = nh[i].split(',');
}
StartHidden(el);
if(nhn.length > 0){
var tbl = document.getElementById(el).getElementsByTagName('table')[0];
for(var k = 0; k < nhn[0].length; k++){
var stop = false;
for (var i = 0; i < tbl.rows.length; i++){
var trCurrent = tbl.rows[i];
if(stripTrailing(trCurrent.cells[0].style.paddingLeft, UOM_SIZE) == INDENT_SIZE*k || (trCurrent.cells[0].style.paddingLeft.indexOf(UOM) == -1 && k ==0)){
for(var j = 0; j < trCurrent.cells[0].children.length; j++){
if(trCurrent.cells[0].children[j] != null && trCurrent.cells[0].children[j] != undefined){
for(var kk = 0; kk < nhn.length; kk++){
if(trCurrent.cells[0].children[j].innerHTML == nhn[kk][k] && nhn[kk][k] != ''){
stop = true;
var IMG = trCurrent.cells[0].firstChild;
if(IMG.src != null && IMG.src != undefined)
IMG.src = IMG_PATH + IMG_NAME + (IMG.src.indexOf( IMG_DOWN_SUFIX ) == -1 ? IMG_DOWN_SUFIX : IMG_UP_SUFIX ) + IMG_EXTENSION
break;
}else{
stop = false;
}
}
if(stop) break;
}
}
}
if (stripTrailing(trCurrent.cells[0].style.paddingLeft, UOM_SIZE) == INDENT_SIZE*(k+1) && stop){
trCurrent.style.display = "block";
}
}
}
}
}
Cognos 10.1.1 - Released - Lançado
Post rapidinho pra começar o dia.
Então, eis que a IBM lança mais uma versão do Cognos, bom... muitos vão falar que não é uma versão, só um patch ou algo assim.
Gostaria que isso fosse verdade, antigamente eu diria que 10 era a versão, 1 a release e o outro 1 era patch, mas esse lançamento tem coisas diferentes e não existe a possibilidade de atualização de uma versão existente, fora que eles já tinham lançado o FP1.
É necessário fazer uma nova instalação!!
Resumindo Cognos 10.1.0 + FP1 ≠ Cognos 10.1.1
A única coisa que me chamou a atenção, até agora, foi o lançamento do report service finalmente em 64-bits, porém ao que parece ele foi feito para ser utilizado junto ao DQM(Dynamic Query Mode) um treco que aprimora query e caches em alguns tipos de fontes de dados como TM1, Essbase e agora em DMR.
Então não se deve esperar que a velocidade ou capacidade dos relatórios diminua e aumente, respectivamente, só nos casos citados.
Fora isso, uma bela lista de correção de erros, e mesmo assim eu já achei um, incrível!
Agora é ir usando pra ver o mais da pra fazer.
Abs
Então, eis que a IBM lança mais uma versão do Cognos, bom... muitos vão falar que não é uma versão, só um patch ou algo assim.
Gostaria que isso fosse verdade, antigamente eu diria que 10 era a versão, 1 a release e o outro 1 era patch, mas esse lançamento tem coisas diferentes e não existe a possibilidade de atualização de uma versão existente, fora que eles já tinham lançado o FP1.
É necessário fazer uma nova instalação!!
Resumindo Cognos 10.1.0 + FP1 ≠ Cognos 10.1.1
A única coisa que me chamou a atenção, até agora, foi o lançamento do report service finalmente em 64-bits, porém ao que parece ele foi feito para ser utilizado junto ao DQM(Dynamic Query Mode) um treco que aprimora query e caches em alguns tipos de fontes de dados como TM1, Essbase e agora em DMR.
Então não se deve esperar que a velocidade ou capacidade dos relatórios diminua e aumente, respectivamente, só nos casos citados.
Fora isso, uma bela lista de correção de erros, e mesmo assim eu já achei um, incrível!
Agora é ir usando pra ver o mais da pra fazer.
Abs
Assinar:
Postagens (Atom)

