Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Olá,
Alguem teria alguma ideia de como resolver isso?
preciso resolver aquelas formulas no qlikview... @1 = valor do cod 1 ....
logo (@1 + @2 - @3) / 100 = ( 10+ 10 - 10) / 100...
Olá RSilvestre,
Seguinte, carrega os dados usando Mapping.
Valores:
Mapping
LOAD '@'&Cód as CodFormula, Valor
FROM [Valores.xlsx]
(ooxml, embedded labels, table is Plan1);
Formulas:
LOAD '@'&Código as CodFormula,
MapSubString('TrataValores',Formula) as NovaFormula,
Evaluate(MapSubString('Valores',Formula)) as Resultado
Resident Valores
Where Formula <> '';
Assim o resultado será uma coluna com os devidos valores substituidos.
Ex: Cód: 6 = (10+10-10)/100 = 0,1
Bem atento a função Evaluate, pois sem ela, o resultado é considerado texto, usando essa função, ele faz o calculo para você.
Abraço.
Bom Dia,
Você pode realizar o tratamento direto no seu script.
Ex.:
AUX:
LOAD *
INLINE [
COD, DESC, VLR
1, CTBA, 10
2, FOZ, 10
3, PATO, 10
4, JOIN, 10
5, FLORI, 10
6, PR, 0
7, SC, 0
];
TABLE:
LOAD
COD,
DESC,
IF(COD <> 6 AND COD <> 7, VLR,
IF(COD = 6, (PEEK('VLR', 0, 'AUX') + PEEK('VLR', 1, 'AUX') - PEEK('VLR', 2, 'AUX')) / 100,
IF(COD = 7, PEEK('VLR', 3, 'AUX') * PEEK('VLR', 4, 'AUX') ) ) ) AS VALOR
RESIDENT AUX;
DROP TABLE AUX;
Obrigado pela ajuda,
mas este é só um pequeno exemplo para ficar mais facil de demonstrar...
tenho uma tabela com mais de mil fórmulas iguais a esta...
A idéia é justamente expor que a função PEEK() pode ser utilizada para obter os valores de determinados registros.
É um caminho, não uma solução.
Acredito que também deva utilizar algumas funções de caracteres como replace(), para que atenda totalmente suas expectativas.
Abraços!
Olá RSilvestre,
Seguinte, carrega os dados usando Mapping.
Valores:
Mapping
LOAD '@'&Cód as CodFormula, Valor
FROM [Valores.xlsx]
(ooxml, embedded labels, table is Plan1);
Formulas:
LOAD '@'&Código as CodFormula,
MapSubString('TrataValores',Formula) as NovaFormula,
Evaluate(MapSubString('Valores',Formula)) as Resultado
Resident Valores
Where Formula <> '';
Assim o resultado será uma coluna com os devidos valores substituidos.
Ex: Cód: 6 = (10+10-10)/100 = 0,1
Bem atento a função Evaluate, pois sem ela, o resultado é considerado texto, usando essa função, ele faz o calculo para você.
Abraço.
Utilizando o mapping como o Aderlan mencionou acredito que resolva os seus problemas.
Somente na linha "MapSubString('TrataValores',Formula)", deve ser MapSubString('Valores',Formula), pois o parâmetro deve referenciar a tabela de mapping.
Otima solução!
Abraços!!
Rsrsrs...
Verdade, estava fazendo testes com outras tabelas então esqueci de alterar o nome na função.
Obrigado Eduardo pela correção.
Abraço.
Obrigado Aderlan e Eduardo...
Muito boa a solução realmente...