Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Prezados,
Estou a procura de uma solução onde eu possa validar uma linha da tabela (colunas concatenadas) a partir de uma outra tabela contendo as regras desta validação.
Pelo excel, eu consigo fazer usando o procv, já pelo Qlik não encontrei uma maneira.
Exemplo:
Se a informação de uma coluna na tabela de dados constar na tabela de regras, ela deverá retornar a informação Sim, caso contrário, Não.
Espero ter deixado claro minha dúvida.
Desde já agradeço
Att
Fabricio
Tente usar uma tabela mapeada.
PROCV:
MAPPING LOAD
Chave,
Retorno
FROM AlgumLugar;
Na outra tabela faz assim:
OUTRATABELA:
LOAD
ApplyMap('PROCV', Chave, 'ERRO') as MeuRetorno
FROM AlgumLugar\Tabela2;
Você pode tentar usar a função Exists.
Exists - função de script ‒ Qlik Sense
Ou a função lookup.
LookUp - função de script ‒ Qlik Sense
No seu caso acho que a função Exists com where seria o ideal.
Marco, fiz algumas tentativas e não consegui chegar no resultado esperado, abaixo segue minha última tentativa:
PROCV:
Mapping LOAD
Regras,
"Variáveis de referência"
FROM [lib://Regras/Variaveis_ref_producao.xlsx]
(ooxml, embedded labels, table is Variaveis_ref_producao);
LIB CONNECT TO 'Oracle_172.18.4.28';
LOAD PROJETO,
NOME,
ALINHAMENTO,
UO,
UNIDADE,
COD_PROGRAMA,
PROGRAMA,
COD_ATIVIDADE,
ATIVIDADE,
COD_MODALIDADE,
MODALIDADE,
COD_REALIZACAO,
[REALIZAÇÃO],
COD_SUBREALIZACAO,
SUBREALIZACAO,
[COD_UNIDADEPRODUÇÃO],
[UNIDADEPRODUÇÃO],
[COD_SUBUNIDADEPRODUÇÃO],
[SUBUNIDADEPRODUÇÃO],
CATEGORIA,
MES,
MES_ANO,
VALOR as TOTAL,
ApplyMap('PROCV', Regras, '_NÃO POSSUI_') as Soma_Variaveis_referencia;
[BI_PRODUCAOPREV]:
SELECT "PROJETO",
"NOME",
"ALINHAMENTO",
"UO",
"UNIDADE",
"COD_PROGRAMA",
"PROGRAMA",
"COD_ATIVIDADE",
"ATIVIDADE",
"COD_MODALIDADE",
"MODALIDADE",
"COD_REALIZACAO",
"REALIZAÇÃO",
"COD_SUBREALIZACAO",
"SUBREALIZACAO",
"COD_UNIDADEPRODUÇÃO",
"UNIDADEPRODUÇÃO",
"COD_SUBUNIDADEPRODUÇÃO",
"SUBUNIDADEPRODUÇÃO",
"CATEGORIA",
"MES",
"MES_ANO",
"VALOR"
FROM "GX_PRODUCAOSESC"."BI_PRODUCAOPREV";
LOAD MES,
MES_ANO,
PROJETO,
NOME,
ALINHAMENTO,
UO,
UNIDADE,
COD_PROGRAMA,
PROGRAMA,
COD_ATIVIDADE,
ATIVIDADE,
COD_MODALIDADE,
MODALIDADE,
COD_REALIZACAO,
[REALIZAÇÃO],
COD_SUBREALIZACAO,
SUBREALIZACAO,
[COD_UNIDADEPRODUÇÃO],
[UNIDADEPRODUÇÃO],
[COD_SUBUNIDADEPRODUÇÃO],
[SUBUNIDADEPRODUÇÃO],
CATEGORIA,
TOTAL,
ApplyMap('PROCV', Regras, '_NÃO POSSUI_') as Soma_Variaveis_referencia;
[BI_PRODUCAOREAL]:
SELECT "MES",
"MES_ANO",
"PROJETO",
"NOME",
"ALINHAMENTO",
"UO",
"UNIDADE",
"COD_PROGRAMA",
"PROGRAMA",
"COD_ATIVIDADE",
"ATIVIDADE",
"COD_MODALIDADE",
"MODALIDADE",
"COD_REALIZACAO",
"REALIZAÇÃO",
"COD_SUBREALIZACAO",
"SUBREALIZACAO",
"COD_UNIDADEPRODUÇÃO",
"UNIDADEPRODUÇÃO",
"COD_SUBUNIDADEPRODUÇÃO",
"SUBUNIDADEPRODUÇÃO",
"CATEGORIA",
"TOTAL"
FROM "GX_PRODUCAOSESC"."BI_PRODUCAOREAL";
Porém deu o seguinte erro:
Ocorreram os seguintes erros:
Field 'Regras' not found
O erro ocorreu aqui:
?
Os dados não foram carregados. Solucione o erro e tente carregar novamente.
Tenta este exemplo:
TMP:
LOAD * INLINE [
DATA, NOME, CHAVE
20170904,FULANO,A
20170904,CICLANO,C
20170904,BELTRANO,B
];
PROCV:
MAPPING LOAD * INLINE [
CHAVE, REGRA
A,EXCLUIR
B,ALTERAR
C,ENVIAR
];
TABELA:
NoConcatenate
LOAD
DATA,
NOME,
ApplyMap('PROCV', CHAVE, 'XXXX') as ProcvResposta
RESIDENT TMP;
DROP TABLE TMP;
Qual seria o equivalente no procv ao primeiro parâmetro?
Realmente você não tem um Campo chamado "Regras", qual deveria ser mapeado
É esse que deveria vir aqui
ApplyMap('PROCV', PARAMETRO_PESQUISA_PRIMEIROPARAMETRODOPROCV, '_NÃO POSSUI_') as Soma_Variaveis_referencia
Bom dia!
Clever as tabelas mapeadas funcionam retornando um valor se a chave enviada for verdadeira.
Se você quer trazer outras colunas, o melhor é criar uma chave que una as tabelas e assim você terá acesso a todos os campos disponíveis entre as tabelas vinculadas.
Eu estava perguntando ao Fabricio, eu conheço o funcionamento do applymap()