Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
jonas_lomiler
Contributor II
Contributor II

Como retornar um valor de uma tabela?

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.

Labels (3)
1 Solution

Accepted Solutions
Thiago_Justen_

Depois de formatar o campo conforme acima...

Veja se isso te atende:

Teste.gif

Expressão usada: AddMonths([Balancete - Competência],-$(vNum))

Onde vNum = Nº inteiro usado para retroceder em meses.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago

View solution in original post

12 Replies
fmbrancher
Creator
Creator

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?

Thiago_Justen_

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:

Capturar.PNG

Tabela na UI:

Capturar.PNG

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.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
jonas_lomiler
Contributor II
Contributor II
Author

É 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.

jonas_lomiler
Contributor II
Contributor II
Author

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.

print1.jpg

jonas_lomiler
Contributor II
Contributor II
Author

Felipe...
Abaixo eu tentei explicar um pouco melhor o que estou fazendo.

Thiago_Justen_

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:

Capturar.PNG

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
jonas_lomiler
Contributor II
Contributor II
Author

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

jonas_lomiler
Contributor II
Contributor II
Author

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?

Thiago_Justen_

Depois de formatar o campo conforme acima...

Veja se isso te atende:

Teste.gif

Expressão usada: AddMonths([Balancete - Competência],-$(vNum))

Onde vNum = Nº inteiro usado para retroceder em meses.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago