Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa tarde,
tenho 3 tabelas ligadas pelo campo cod_prod , e cada tabela tem um campo data diferente ( data de venda, data do custo , data custo materia prima)...
preciso relacionar essas tabelas pelo cod_prod e pela data, criando um calendario para as 3 datas, o problema é que nao consigo fazer isso sem dar referência circular....
alguem tem alguma dica ...
segue em anexo o print do visualizador de tabelas para ficar mais facil de compreender.
Olá Rodrigo, segue em anexo exemplo usando ilha de datas. No exemplo eu tenho uma tabela com títulos, filtrando o calendário eu consigo saber quantos títulos foram emitidos, venceram e foram recebidos no mês selecionado sem a existência de relação lógica entre as tabelas.
Abraços.
olá,
vc pode colocar as data em uma mesma tabela para evitar a referencia circular a fazer o filtro para o calendario... vai ficar +ou- dessa forma:
LinkTable:
load
cod_prod,
dt_mp_custo as data
resident mp;
add load
cod_prod,
dt_venda_prod as data
resident venda;
add load
cod_prod,
dt_prod_custo as data
resident prod;
Boa tarde Fabio,
valeu pela ajuda, mas ainda nao deu certo ... quando eu concateno as tabelas, os valores não batem, acho que acabam duplicando... tentei colocar distinct no load... mas nao deu certo ...
Olá Rodrigo,
Você pode criar uma única tabela de calendário e deixá-la isolada, isto é, sem relacionamentos (ilha de datas). Aí você utilizaria funções como InDate, InMonth, etc... nas suas expressões, hora filtrando pela data X, hora pela data Y.
Bom dia Rodrigo,
lembre que o melhor modelo para se trabalhar com o Qlikview é o modelo estrela (cria-se uma tabela fato e apenas liga-se a fato tabelas auxiliares). Recomendaria a você fazer o seguinte:
1) faça um left join de venda_prod com venda_produto
2) faça um left join de mp com materia_prima
3) faça um left join de prod com produto
4) concatene tudo isso
5) crie seu calendario e ligue na tabela fato.
T+
Cara,
Se a quantidade de tabelas que usem o caledário for pequeno, você também pode criar um calendário para cada uma das tabelas.
Cria uma aba separada para os calendário no script (fica mais fácil de gerenciar separando uma aba só pros calendários) e põe teus calendarios lá.
Em Vários casos específicos isso tem me ajudado.
Tenho um Exemplo que utilizei e deu muito certo. Talvez possa te ajudar.
Foi um caso de três tabelas que usavam calendário. A tabela de "Ordem_de_Serviço", "Parcelamento" e "Pagamento".
Exemplo Abaixo:
Calendario_Geração_OS:
LOAD date(ORSE_TMGERACAO_DATA) as ORSE_TMGERACAO_DATA,
Month(ORSE_TMGERACAO_DATA) as Mês_Geração_OS,
Year(ORSE_TMGERACAO_DATA) as Ano_Geração_OS,
Day(ORSE_TMGERACAO_DATA) as Dia_Geração_OS,
Date(MonthStart(ORSE_TMGERACAO_DATA),'MMM/YYYY') as [Mês/Ano_Geração_OS],
Week(ORSE_TMGERACAO_DATA) as Semana_Geração_OS
Resident [Ordem_de_Serviço];
CalendarioPARC:
LOAD date(PARC_TMPARCELAMENTO_DATA) as PARC_TMPARCELAMENTO_DATA,
Month(PARC_TMPARCELAMENTO_DATA) as Mês_PARC,
Year(PARC_TMPARCELAMENTO_DATA) as Ano_PARC,
Day(PARC_TMPARCELAMENTO_DATA) as Dia_PARC,
Date(MonthStart(PARC_TMPARCELAMENTO_DATA),'MMM/YYYY') as [Mês/Ano_PARC],
Week(PARC_TMPARCELAMENTO_DATA) as Semana_PARC
Resident [Parcelamento];
Calendario_Pagamento:
LOAD date([Data do Pagamento]) as [Data do Pagamento],
Month([Data do Pagamento]) as Mês_do_Pagamento,
Year([Data do Pagamento]) as Ano_do_Pagamento,
Day([Data do Pagamento]) as Dia_do_Pagamento,
Date(MonthStart([Data do Pagamento]),'MMM/YYYY') as [MêsStart/Ano_Pagamento],
Date(MonthEnd([Data do Pagamento]),'MMM/YYYY') as [MêsEnd/Ano_Pagamento],
Week([Data do Pagamento]) as Semana_do_Pagamento
Resident [Pagamento];
Olá Rodrigo, segue em anexo exemplo usando ilha de datas. No exemplo eu tenho uma tabela com títulos, filtrando o calendário eu consigo saber quantos títulos foram emitidos, venceram e foram recebidos no mês selecionado sem a existência de relação lógica entre as tabelas.
Abraços.
Obrigado pela ajuda de todos, tentei de várias formas colocadas aqui, porém acontecia sempre o mesmo problema, quando eu ligava os calendários pelo cod_prod os valores não batiam, e quando eu tentava ligar pelas datas dava referência circular.
A melhor solução foi usando ilhas de datas... essa função InMonth() eu não conhecia, e com o exemplo do Cesar ficou bem claro como utiliza-la.
Mais uma vez, obrigado pela ajuda de todos