Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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 |
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