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 |
Glauber, sugiro a criação de uma tabela Calendário e esta tabela fará a ligação por um campo de Data (Dia, Mês e Ano) com as outras tabelas. As dimensões temporais passarão a ser a da tabela de calendário.
Faltou demonstrar como construir um calendário rsrs
Primeiro você precisa descobrir o menor e o maior valor de data, para isso, faça um concatenate de todas as tabelas utilizando somente o campo de data, por exemplo:
Menor_Maior_Data_Tmp:
LOAD
DATA_CADASTRO AS DATA
RESIDENT USUÁRIO;
CONCATENATE
LOAD
DATA_MATRICULA as DATA
RESIDENT TURMA_ALUNO;
Faça isso com todas as suas tabelas, depois você pode calcular a menor e a maior data através de variáveis:
Menor_Maior_Data:
LOAD
MAX(DATA) as MaiorData,
MIN(DATA) as MenorData
RESIDENT Menor_Maior_Data_Tmp;
LET vMaiorData = Peek('MaiorData',0,'Menor_Maior_Data');
LET vMenorData = Peek('MenorData',0,'Menor_Maior_Data');
Com essas variáveis criadas, basta gerar o relatório:
CALENDARIO:
Load
date('$(vMenorData)' + Recno() - 1) as Data
AutoGenerate ('$(vMaiorData)' - '$(vMenorData)' + 1);
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.
Valeu Yuri pela força ai.
Deu um erro na expressa com "AutoGenerate " troquei por "AutoNumber", algum problema?
Em qual tabela eu crio os campos Mês,Ano?
Você precisa criar esses campos na tabela CALENDARIO.
Qual foi o erro que apresentou? Pode ser algum erro de sintaxe, pois digitei diretamente aqui no post
Error in expression:
AUTOGENERATE is not a valid function
CALENDARIO:
Load
Date('37540,683272535' + Recno() - 1) as DATA,
AutoGenerate('41961,500173611' - '37540,683272535' + 1)
Estranho esse erro... (irei te mandar um exemplo)
só um detalhe, seu campo de data contém DATA e HORA, o ideal é remover a hora desse campo para criar o calendário. Para remover a hora desse campo, basta utilizar a função Date(Floor(DATA)).
Sim, o campo de data contém a HORA, usei o função Date(floor(data) para remover, mas o erro continua..
Error in expression:
AUTOGENERATE is not a valid function
Nesse seu exemplo você deve remover a virgula após o o Campo DATA.
CALENDARIO:
Load
Date('37540' + Recno() - 1) as DATA
AutoGenerate('41961' - '37540' + 1)
Qlikfique-se.
Tonial.
Segue o exemplo em anexo.
Sobre o seu erro: disponibilize seu código ou app de exemplo para análise