Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia, em meu projeto eu tenho uma tabela com as filiais, então cada filial tem um número (001,002,003,004) e assim por diante,
a questão é que a filial 019 e a filial 400 são no mesmo prédio portanto eu tenho que unificar as duas em meus calculos, estou usando este scritp nas tabelas fato:
if (id_unidade='201','001',
if(id_unidade='019','400',
if(id_unidade='107','094',
if(id_unidade='008','108',
if(id_unidade='011','092',
if(id_unidade='013','093',
if(id_unidade='900','901',
if(id_unidade='401','190',
if(id_unidade='402','191',
if(id_unidade='702','601',
if(id_unidade='703','602',
if(id_unidade='704','603',
if(id_unidade='092','071',
if(id_unidade='770','700',
if(id_unidade='018','700',
if(id_unidade='600','701',
if(id_unidade='660','701',id_unidade))))))))))))))))) as id_unidade
porém todos as tabelas que tenham id_unidade eu preciso colocar este codigo. Esta correto fazer assim ou tem alguma coisa mais facil? gostaria de tratar no script ou mesmo na criação do arquivo .QVD. Alguma sugestão para eu melhorar este codigo?
Verifique a função MAPPING LOAD, ela cria um tabela de de/para conforme o Regério informou.
Mapping LOAD é uma tabela que fica na memória do QLikView durante a carga e serve para realizar um de/para. Essa tabela deve ter duas colunas, sendo a primeira coluna "de" e a segunda coluna o "para"
Depara:
Mapping LOAD * INLINE [
x, y
1, 2
2, 3
3, 4
];
Depois, para utilizar essa tabela de de/para, basta utilizar a função APPLYMAP ou Mapsubstring.
APPLYMAP o valor precisa ser idêntico a sequencia de caractere informado no mapa
Mapsubstring o valor precisa conter a sequencia de caractere informado no mapa
LOAD
APPLYMAP( 'Depara', COLUNA) as COLUNA
Mapsubstring( 'Depara', COLUNA2) as COLUNA2
FROM x.qvd;
Hamilton,
Eu utilizaria uma tabela inline, onde teria o DE-->PARA... ANTIGAFILIAL / NOVAFILIAL.
Creio que assim não necessites utilizar o script para todas as tabelas... farias a vinculação a eles e utilizaria o campo NOVAFILIAL para agrupamento.
Abraços.
ótimo, isto na criação do arquivo QVD mesmo? ou no próprio script?
Hamilton,
Em qualquer um dos dois, desde que vc faça a modelagem no script do documento final.
Abraços.
Obrigado, vou testar.
Verifique a função MAPPING LOAD, ela cria um tabela de de/para conforme o Regério informou.
Mapping LOAD é uma tabela que fica na memória do QLikView durante a carga e serve para realizar um de/para. Essa tabela deve ter duas colunas, sendo a primeira coluna "de" e a segunda coluna o "para"
Depara:
Mapping LOAD * INLINE [
x, y
1, 2
2, 3
3, 4
];
Depois, para utilizar essa tabela de de/para, basta utilizar a função APPLYMAP ou Mapsubstring.
APPLYMAP o valor precisa ser idêntico a sequencia de caractere informado no mapa
Mapsubstring o valor precisa conter a sequencia de caractere informado no mapa
LOAD
APPLYMAP( 'Depara', COLUNA) as COLUNA
Mapsubstring( 'Depara', COLUNA2) as COLUNA2
FROM x.qvd;
Boa tarde Yuri, obrigado pela dica, testei aqui e funcionou em um arquivo teste,
fiz um teste com dois campos, Unidade e Valor, funcionou perfeito porém o código fixa extenso da mesma forma que os IFs.
é que assim, meu projeto esta com 8 tabelas e todas tem o id_unidade, de qualquer forma eu vou ter que colocar esse script em todas correto? para que sejam vinculados todos os valores. como eu disse, o IF funcionou mas nao parece correto.
Única coisa que você precisa repetir é o APPLYMAP para todas as colunas que precisa fazer o de/para
Então, fiz um teste aqui e não funcionou como eu queria, na verdade vou dar uma estudada nela, pode ser bem útil, Obrigado.
Bom dia, obrigado Yuri, o código funcionou perfeitamente em meu projeto, na semana passada eu não tinha entendido muito bem, facilitou consideravelmente meu trabalho. Abraço.