Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
viniciusroteli
Contributor III
Contributor III

Como criar um QVD de forma dinâmica basado em parametros de outro QVD !!!

Tenho a seguinte situação:

Para cada registro tenho um COD, e um ano_inicio e ano Fim, preciso que crie pra cada COD, as linhas informando que ele permaneceu de ano_inicio até ano_fim.

Exemplo:

COD | ANO_INICIO | ANO_FIM

1       |  2002             | 2005

2       |  2006             | 2008

Resultado esperado:

COD | ANO_PERMANC

1       |  2002           

1       |  2003

1       |  2004

1       |  2005

2       |  2006

2       |  2007

2       |  2008

Consegui fazer quando no LOAD filtro apenas um COD, segue QVW.

Labels (4)
4 Replies
igoralcantara

Eu faria assim:

1 - Pegaria em variáveis o Min Ano_Inicio e o Max Ano_Fim;

2 - Criaria uma tabela TempAno com todos os anos nesse intervalo

3 - Usaria um IntervalMatch com Left Join que associe o Ano da tabela TempAno com o intervalo Ano_Inicio e Ano_Fim da primeira tabela.

 

 

Check out my latest posts at datavoyagers.net
viniciusroteli
Contributor III
Contributor III
Author

Igor,

 

Eu fiz isso no exemplo, mas como tenho vários códigos e cada um com se inicio e fim divergentes quando filtro apenas um COD ele funcionou, você chegou a olhar o meu exemplo anexo ?

igoralcantara

Não consegui ver seu exemplo, não tenho mais o QlikView instalado aqui há um tempo já.

Pode colar o código aqui?

Check out my latest posts at datavoyagers.net
viniciusroteli
Contributor III
Contributor III
Author

Igor,

Segue o Código, abaixo no LOAD INLINE, só te um código filtrado, quando tiro o where ele não faz pra todos os COD, existentes.

[TESTE]:
Load * Inline [

COD, ANO_INICIO, ANO_FIM

4,1971,1971
6,1976,1978
51,1984,1986
83,1978,1980
115,1988,1990
129,1982,1984
139,1980,1982
148,1990,1992
216,1986,1988
243,2000,2003
269,1992,1994
285,2012,2015
300,2009,2012
326,1994,1996
345,2003,2006
362,1996,1998
548,2006,2009
607,1974,1976
748,2021,2024
863,2024,2027
3983,2018,2021
3992,2015,2018
70605,1971,1974
70777,1998,2000


] WHERE COD = '863';


Table:
Load *
Resident TESTE;

Let vMin=Peek('ANO_INICIO', 0, 'Table');
Let vMax=Peek('ANO_FIM', 0, 'Table');
Let vPrest=Peek('Cod_Prest', 0, 'Table');


For vI = $(vMin) to $(vMax)

[DataTbl]:


Load
ANO_INICIO,
ANO_FIM,
COD,
$(vI) as ANO_PRES
resident TESTE;
Store [DataTbl] into C:\WBI\ETL\SGU\Desenvolvimento\TESTE_PREST_ANDRE1.qvd;


Next vI
Store [DataTbl] into C:\WBI\ETL\SGU\Desenvolvimento\TESTE_PREST_ANDRE.qvd;
//drop Table [DataTbl];