Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
estou criando esta tabela abaixo mas não esta mais aceitando o comando IF ?
Amigo, o From é simplesmente aonde vai buscar a tabela com os dados;
Exemplo:
Tab_teste:
Load
Campo1
, Campo2
, ApplyMap('Map_Base1', SubField(BASE, '-', 1), ApplyMap('Map_Base2', SubField(BASE, '-', 2), 'Não definido')) As 'PRODUTO'
FROM
(qvd); //endereço da tabela
Dependendo de como está o seu modelo, pode varia o método;
Outros exemplos:
Tab1:
LOAD * from 'c:\userfiles\data2.txt' (ansi, txt, delimiter is '\t', embedded labels);
Tab2:
SELECT A,B,C,D from transtable;
Tab3:
LOAD A,B,month(C),A*B+D as E resident Tab2;
Percebi que você editou a sua pergunta e removeu a sua amostra que tinha o nome dos campos (Recordo que tinha o campo BASE).
Mas a proposta inicial da pergunta antes da sua edição era de resolver a questão dos 100 IFs... E a proposta para o seu caso foi de utilizar Mapping.
Abraço.
Observe:
Sim, existe.
Você não pode ter mais que 100 níveis de aninhamento de If´s
A solução de contorno para você é
Mapa:
mapping load * inline [
De, Para
1025, RTB
1020, DTH
// cadastre todas as transformacoes
];
LOAD
ApplyMap('Mapa',SubField(BASE, '-', 2)) as PRODUTO
Amigo,
Recomendo por conta de performance, manutenção e boa prática utilizar Mapping;
Exemplo:
Map_Base1:
Mapping Load *
Inine [
De, Para
23602,'RTB',
30202,'RTB'
];
Map_Base2:
Mapping Load *
Inine [
De, Para
1020, 'DTH',
1021, 'DG',
1023, 'LPDADOS',
1024, 'ADSL',
1013, 'ESSE',
1014, 'ESSE',
1015, 'DTX'
];
Tab_Exemplo:
Load
ApplyMap('Map_Base1', SubField(BASE, '-', 1), ApplyMap('Map_Base2', SubField(BASE, '-', 2), 'Não definido')) As 'PRODUTO',
...
From ...;
Abraço.
Fonte: Mapping ‒ QlikView
Concordo com o Cleaver e esse é sem duvida a maior quantidades de ifs que eu ja vi.
Não é possivel criar uma tabela de DePara e trocar tudo pra uma linha de comando?
cleveranjos, você posta muito rápido... Rsrs
Quando enviei a resposta, o seu apareceu logo encima rsrs
Mas a sua resposta é bem melhor elaborada, colega!
Rsrs, valeu cleveranjos
Amigo;
Opa, eu tinha escrito rápido, é Inline mesmo;
Referente ao erro, é porque você deve ajustar o meu exemplo,
Remova o "..." depois da linha do "ApplyMap" e substitua para os seus campos e a linha do "From ..." também deve ser substituído para a origem correta do seu modelo;
Eu apenas fiz um exemplo de como poderá utilizar o Mapping para substituir os Ifs...
Complete o exemplo da estrutura Map_Base1 e Map_Base2 com as demais condições, repare que deixei separado Map_Base1 para os campos pertinentes aos SubField(BASE, '-', 1) e Map_Base2 para os SubField(BASE, '-', 2) dos seus Ifs()...
Tab_Exemplo:
Load
ApplyMap('Map_Base1', SubField(BASE, '-', 1), ApplyMap('Map_Base2', SubField(BASE, '-', 2), 'Não definido')) As 'PRODUTO',
... <<<< Erro do script*
From ...; <<<< Erro do script*
*deixei como exemplo
Abraço amigo.
Desculpa mas vc poderia me dar um exemplo com o FROM junto ? Como seria a linha de comando completa ?
Amigo, o From é simplesmente aonde vai buscar a tabela com os dados;
Exemplo:
Tab_teste:
Load
Campo1
, Campo2
, ApplyMap('Map_Base1', SubField(BASE, '-', 1), ApplyMap('Map_Base2', SubField(BASE, '-', 2), 'Não definido')) As 'PRODUTO'
FROM
(qvd); //endereço da tabela
Dependendo de como está o seu modelo, pode varia o método;
Outros exemplos:
Tab1:
LOAD * from 'c:\userfiles\data2.txt' (ansi, txt, delimiter is '\t', embedded labels);
Tab2:
SELECT A,B,C,D from transtable;
Tab3:
LOAD A,B,month(C),A*B+D as E resident Tab2;
Percebi que você editou a sua pergunta e removeu a sua amostra que tinha o nome dos campos (Recordo que tinha o campo BASE).
Mas a proposta inicial da pergunta antes da sua edição era de resolver a questão dos 100 IFs... E a proposta para o seu caso foi de utilizar Mapping.
Abraço.
Observe: