Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Duvida Load + Loop + Popular

Saudações Pessoal, Tudo certo ?

Estou me batendo uns 2 dias para criar a seguinte situação:

Determinada carteira de sócios pode ter seu analista responsavel substituido ao decorrer de um periodo.

Vejam a figura abaixo:

Até o mes 11/2012 o Analista X era responsavel,

Após o mes 12/2012 o Analista Y passou a ser o responsavel. Notem que o campo Ano/mes estao nulos, então se não houver nova troca de analista, este sera responsavel ate data corrente.

Pois bem, segue o problema. Imaginamos que eu determine a data de inicio 01/06/2012 até 01/06/2013.

O Resultado que viso buscar seria o da segunda figura em anexo.

Ja tentei varias formas com loop e sem sucesso, se alguem ja passou por situacao semelhante ...

Grato

Abraço a todos.


1 Solution

Accepted Solutions
aderlanrm
Partner - Specialist
Partner - Specialist

Boa noite Paulo,

Use o código do link abaixo para criar um calendário com as datas que você precisa usando o código como chave, assim, você vai ter uma relação enriquecida dos dados e nos gráficos, tabelas, lista poderá usar as dimensões e medidas normalmente da forma que você predente.

http://community.qlik.com/message/162975#162975

Faça em um arquivo que possa postar aqui, para testes, caso tenha alguma dúvida a galera ajuda.

Grande abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)

View solution in original post

4 Replies
aderlanrm
Partner - Specialist
Partner - Specialist

Boa noite Paulo,

Use o código do link abaixo para criar um calendário com as datas que você precisa usando o código como chave, assim, você vai ter uma relação enriquecida dos dados e nos gráficos, tabelas, lista poderá usar as dimensões e medidas normalmente da forma que você predente.

http://community.qlik.com/message/162975#162975

Faça em um arquivo que possa postar aqui, para testes, caso tenha alguma dúvida a galera ajuda.

Grande abraço.

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Caro Aderlan,

Depois de bater cabeça durante um tempo consegui improvisar uma solução, ao meu ver não ficou o código tão "elegante" , porem funcional.

aderlanrm
Partner - Specialist
Partner - Specialist

É o que importa Paulo, funcionar e documentar, inclua comentários para você saber o que esta feito, daqui a algum tempo os comentários são valiosos. Rsrsrs

Abraço

Aderlan Rodrigues
Analista, Arquiteto de Dados e Piloto Amador Drone FPV
 (41) 9 9917-0869  www.BIdeAZ.com.br  Youtube.com/bideaz  Instagram.com/bideaz.in

"Nada é tão inútil quanto fazer eficientemente o que não deveria ser feito." (Peter Drucker)
Not applicable
Author

Tem um exemplo que fiz aqui para ajudar.

Abraços!!

------------------------------------------------------------------------------------------------------------------------

LET vDataIni = '01/06/2012';

LET vDataFim = '01/06/2013';

LET vData = 0;

LET vDataUsuario = 0;

LET vRegistro = 0;

LET vCount = 0;

vCount = ((NUM(YEAR(vDataFim), 0) - NUM(YEAR(vDataIni), 0)) * 12) + (NUM(MONTH(vDataFim), 0) - NUM(MONTH(vDataIni), 0)) ;

TMP:

LOAD

          ANALISTA_FUNCIONARIO,

          ANALISTA_CODIGO,

          ANALISTA_NOME,

          CARTEIRA,

          ANO,

          MES,

          1 AS TIPO_TABELA

INLINE [

    ANALISTA_FUNCIONARIO, ANALISTA_CODIGO, ANALISTA_NOME, CARTEIRA, ANO, MES

    Aline, 179, Analista 01, 167, 2012, 11

    Rafaela, 220, Analista 01, 167

];

 

vData = vDataIni;

FOR i=1 TO vCount   

   

    vDataUsuario = MAKEDATE(PEEK('ANO', $(vRegistro), 'TMP'), PEEK('MES', $(vRegistro), 'TMP'), 1);

   

    IF( TEXT(vDataUsuario) = TEXT(vData) ) THEN

      vRegistro = 1;

    END IF;

   

          CONCATENATE

          LOAD

                    PEEK('ANALISTA_FUNCIONARIO', $(vRegistro), 'TMP') AS ANALISTA_FUNCIONARIO,

                    PEEK('ANALISTA_CODIGO', $(vRegistro), 'TMP') AS ANALISTA_CODIGO,

                    PEEK('ANALISTA_NOME', $(vRegistro), 'TMP') AS ANALISTA_NOME,

                    PEEK('CARTEIRA', $(vRegistro), 'TMP') AS CARTEIRA,

                    YEAR('$(vData)') AS ANO,

                    NUM(MONTH('$(vData)')) AS MES,

                    2 AS TIPO_TABELA

          AUTOGENERATE(1);

 

          vData = DATE(MonthEnd(vData) + 1, 'DD/MM/YYYY');

 

NEXT

          TABELA:

          NOCONCATENATE

          LOAD

                    ANALISTA_FUNCIONARIO,

                    ANALISTA_CODIGO,

                    ANALISTA_NOME,

                    CARTEIRA,

                    ANO,

                    MES

          RESIDENT TMP

          WHERE TIPO_TABELA = 2;

 

DROP TABLE TMP;