Bom dia,
Agradeço a ajuda desde já.
Eu tenho uma tabela simples chamada 'TB_LISTA_COMPETENCIA', com dois campos:
IDCOMPETENCIA
Balancete - Competência
Basicamente, para cada IDCOMPETENCIA (numero sequencial) existe uma unica competência.
Para ilustrar melhor a dúvida, vamos considerar que esta tabela está populada da seguinte forma:
IDCOMPETENCIA | Balancete - Competência
1 201804
2 201805
3 201806
Eu preciso de uma função que eu passe o IDCOMPETENCIA e seja retornado a respectiva competência. Seria algo análogo à função PROCV do Excel.
Como posso fazer isso?
Obrigado novamente.
Depois de formatar o campo conforme acima...
Veja se isso te atende:
Expressão usada: AddMonths([Balancete - Competência],-$(vNum))
Onde vNum = Nº inteiro usado para retroceder em meses.
Jonas deixa eu ver se eu entendi, tu ques um campo onde você digite o ID e em outro campo apareça a competência é isso?
Jonas,
Considere o exemplo abaixo:
Competencia:
Load * Inline [
IDCOMPETENCIA,"Balancete - Competência"
1,201804
2,201805
3,201806
];
Tabela_Fato:
Load * Inline [
ANO_MES,FATURAMENTO,DESPESA,RESULTADO,IDCOMPETENCIA
201803,100000,80000,20000,1
201804,110000,90000,20000,2
201805,120000,75000,45000,3
201802,135000,65000,70000,1
];
O Qlik relaciona as duas tabelas pelo campo de mesmo nome - nesse caso o IDCOMPETENCIA. Isso significa que se eu quiser criar uma tabela com Faturamento, Despesa, Resultado e Balancete - Competência, eu conseguiria dada a relação entre as tabelas.
Veja no modelo:
Tabela na UI:
Uma variação desse exemplo seria o uso do ApplyMap:
//Aqui criamos uma tabela de mapeamento (deve conter 2, e somente 2 campos)
Competencia:
Mapping
Load
*;
Load * Inline [
IDCOMPETENCIA,"Balancete - Competência"
1,201804
2,201805
3,201806
];
Tabela_Fato:
Load
*,
ApplyMap('Competencia',IDCOMPETENCIA) as "Balancete-Competência";
Load * Inline [
ANO_MES,FATURAMENTO,DESPESA,RESULTADO,IDCOMPETENCIA
201803,100000,80000,20000,1
201804,110000,90000,20000,2
201805,120000,75000,45000,3
201802,135000,65000,70000,1
];
Claro, esses exemplos são simplórios demais e você poderia usar outros recursos aí, mas como sua questão foi muito vaga me reservei do direito de supor um ambiente simples.
Dê-nos mais "ferramentas" para te ajudar que tudo fica mais fácil.
É meio complicado explicar o que estou fazendo.
Mas, basicamente, a minha dúvida é:
Existe uma função que eu passe o ID, e ele retorne qualquer campo da tabela?
Como no exemplo, retornaria a Competência.
Seria como no Excel: Procv(IDCOMPETENCIA;2;FALSO).
Onde o IDCOMPETENCIA é o valor procurado, a coluna que eu quero que retorne é a segunda.
Opa... Vou explicar o que eu quero fazer...
Tenho essas 4 expressões que deveriam ser as competências.
Porém, não consigo usar o campo [Balancete - Competencia]-1. Pois, quando acontecer da competencia ser '201801' ao subtrair 1, ficaria '201800' e o correto seria 201712.
Então, pelo IDCOMPETENCIA, eu consigo ir navegando nas Competências.
A minha necessidade é, passar o IDCOMPETENCIA e retornar o '[Balancete - Competencia]' referente aquele IDCOMPETENCIA passado.
Essa estrutura de IDCOMPETENCIA x [Balancete - Competencia] foi criada para outra finalidade, não foi para essa. Mas, como já tem essa possibilidade, eu gostaria de utiliza-la para preencher os rótulos com as competencias de forma dinâmica conforme o usuário for selecionando a competencia que desejar nos filtros.
Eu preciso trazer a competência, e não o ID da competência.
Felipe...
Abaixo eu tentei explicar um pouco melhor o que estou fazendo.
Teste esse script:
Competencia:
load
IDCOMPETENCIA,
Date(Date#("Balancete - Competência",'YYYYMM'),'YYYYMM') AS "Balancete - Competência";
Load * Inline [
IDCOMPETENCIA,"Balancete - Competência"
1,201804
2,201805
3,201806
];
A formatação do campo Balancete - Competência como acima resolve teu problema de executar o cmapo - 1. Veja:
Eu até consegui reproduzir este teste, deu certo fazendo com -1.
Porém, não consegui fazer mais que -1, por exemplo -2 (menos 2 meses).
Eu preciso fazer isso pois devo mostrar a competencia atual do ano atual, a competencia anterior à atual e comparar essas duas competencias no ano anterior. Ou seja, vou precisar fazer [Balancete - Competencia] - 12 e [Balancete - Competencia] - 13
Cara, será que não tem mesmo nenhuma função mais simples, que eu simplesmente passe o parametro e ele me devolva o valor que eu quero?
Depois de formatar o campo conforme acima...
Veja se isso te atende:
Expressão usada: AddMonths([Balancete - Competência],-$(vNum))
Onde vNum = Nº inteiro usado para retroceder em meses.