terça-feira, 9 de junho de 2015

Exemplo de Função JavaScript Post Fetch no CDE da Ctools - Coluna calculada - Dividindo um coluna pela outra


Abaixo é apresentado um exemplo de função JavaScript onde é usada como Post Fetch no CDE da Ctools, a idéia desse exemplo é percorrer todas as linhas dividindo o valor da coluna 4 pelo valor da coluna 6 depois multiplicando por 100, assim:  

function(queryResult){  
// queryResult é a entrada que o Pentaho fornece

var iLoc=0;    // variável que será utilizada para referenciar a linha

  for (iLoc=0;iLoc<queryResult.resultset.length;iLoc++){ 
  // linha começa em 0 , executa se iLoc for menor que o tamanho 
 // do queryResult e auto incrementa sempre +1 ao valor de iLoc
  
    if (queryResult.resultset[iLoc][4]!==null){ 
    // executa se coluna 4 for nula
         var quantidade = parseFloat(queryResult.resultset[iLoc][4],10); 
         //variável recebe valor da coluna 4, linha por linha até a linha 10.
         var valor = parseFloat(queryResult.resultset[iLoc][6],10); 
         // variável recebe valor da coluna 6, linha por linha até a linha 10
    
         queryResult.resultset[iLoc][7]=(quantidade/valor)*100;
         //coluna 7 recebe o resultado da coluna 4 dividida pela coluna 6, 
          // e o resultado multiplicado por 100
      } 
  }
}

Obs. Não esquecer que a coluna 7 precisa existir, pode ser declarada no MDX e depois listada no select como 0, assim: 
with 
  member [Measures].[aNada] as '0.00'

e depois no select você declara o [Measures].[aNada]

Outra alteranativa é efetuar o cálculo via MDX:
with 
  member [Measures].[result] as '([Measures].[x]/[Measures].[y])*100'
e depois no select você declara [Measures].[result] 


Nenhum comentário:

Postar um comentário