Skip to main content
Announcements
Accelerate Your Success: Fuel your data and AI journey with the right services, delivered by our experts. Learn More
cancel
Showing results for 
Search instead for 
Did you mean: 
glaubergc
Contributor II
Contributor II

Campo DATA unificado ou Calendário Maestro

Bom dia senhores(as),

Ainda estou no início em desenvolvimento no qlikview, estão sempre surgi as 1001 duvidas rs e gostaria de uma ajuda, se for possível.


Bom, tenho 4 tabelas e todas elas tem um campo DATA, gostaria de saber se é possível de unificar o campo DATA de modo que posso selecionar uma data e todas as tabelas filtrasse de acordo com a data selecionada.

Detalhe, em cada tabela a data tem inicio diferente. Exemplo: DATA_CADASTRO tem inicio em 2012, DATA_MATRICULA tem incio em 2007, DATA_ACESSO_JOGO tem inicio em 2012 e a DATA_ACESSO_MINI tem incio em 2014.

Eu li um artigo sobre trabalhar com tabela Fato, e a solução era resolver criar uma tabela de ligação (Link Table).

Mas tive muita dificuldade em traz a teoria para pratica.

Veja um simples exemplos das minhas tabelas:

USUÁRIO

COD_ALUNO

NOME

DATA_CADASTRO

TURMA_ALUNO

COD_TURMA

COD_ALUNO

TIPO_CURSO

DATA_MATRICULA

JOGOS

COD_JOGOS

COD_ALUNO

TIPO_JOGO

DATA_ACESSO_JOGO

MINI_CURSO

COD_MINI_CURSO

COD_ALUNO

TIPO_MINI_CURSO

DATA_ACESSO_MINO

10 Replies
Not applicable

Boa tarde Yuri.

Peguei esta discussão e gostaria de fazer algumas perguntas. Fiz exatamente como vc colocou, criei o calendário, etc...

"Agora basta criar os campos de Mês,Ano,MêsAno, etc e fazer a ligação com as suas tabelas fato através da coluna de Data." Quando fui fazer isto aqui, ele dá referencia circular.

O que eu fiz: na tabela onde tinha o campo DTMOVIMENTO as DATA e nas demais tabelas também... ai vem a bendita referencia circular.

Menor_Maior_Data_Temp:

LOAD

DATE(FLOOR(DTMEDICAO)) AS DATAMESTRE

Resident EACOITEMREGISTROME;

Concatenate

LOAD

DATE(FLOOR(DTPAGTO)) AS DATAMESTRE

Resident ECPGBAIXA;

Concatenate

LOAD

DATE(FLOOR(DTMOVIMENTO)) AS DATAMESTRE

Resident EESTMOVESTOQUE;

Concatenate

LOAD

DATE(Floor(DTMOVIMENTOCXB)) AS DATAMESTRE

Resident ECXAMOVCXABCO;

Menor_Maior_Data:

load

max(Date(Floor(DATAMESTRE))) AS MAIORDATA,

MIN(Date(Floor(DATAMESTRE))) AS MENORDATA

Resident Menor_Maior_Data_Temp;

LET vMaiorData = Peek('MAIORDATA',0,'Menor_Maior_Data');

LET vMenorData = Peek('MENORDATA',0,'Menor_Maior_Data');

CALENDARIO:

Load

date('$(vMenorData)' + Recno() - 1) as DATAMESTRE,

MonthName('$(vMenorData)'+ Recno()-1) AS MESANOMESTRE

AutoGenerate ('$(vMaiorData)' - '$(vMenorData)' + 1);

e nas tabelas eu fiz:

EESTMOVESTOQUE:

LOAD

    CDCENTROCUSTO,

    CDDETALHE,

   // CDDOCUMENTO,

   // CDFORNECEDOR,

    CDINSUMO,

    CDMARCA,

   // CDOBRA,

    CDTABELA,

    CDTIPOMOVIMENTO,

   // CDUNIDADEMOVORIG,

    DTMOVIMENTO,

     MonthName(DTMOVIMENTO) AS MESANOMESTRE,  // <-- ACHO Q ESTOU FALHANDO AQUI.

    NUMOVESTOQUE,

    NUMOVIMENTO,

    QTMOVIMENTO,

    QTORIGEM,

    TPENTRADASAIDA,

    TPSERIE,

    VLMOVIMENTO AS VLMOVIMENTOEST,

    VLORIGEM

FROM $(vExtrator)EESTMOVESTOQUE.QVD(qvd);

STORE EESTMOVESTOQUE into $(vTransforma)EESTMOVESTOQUE.QVD;

IF vDrop = 'S' then

  DROP Table EESTMOVESTOQUE;

ENDIF