Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Boa Noite,
Estou tentando consolidar em uma tabela fato alguns campos de um tabela de dimensão.
FATO:
DIMENSÃO:
Para realizar esse operação preciso fazer um busca da rota entre as rotas inicias e finais respeitando o tipo de veiculo afim de obter o resultado abaixo:
RESULTADO:
Já revirei a internet em busca de soluções mas não consegui encontrar nenhuma, e o intervalmatch simples sempre duplica as as linhas pois não estou conseguindo respeitar o critério tipo e as faixas de rota se repetem.
Por favor, alguém já passou por esse problema pode ajudar?
*Anexo o .qvw com um InLine das tabelas Fato e Dimensão e um modelo em .xlsx para quem preferir.
**Me pergunto se criar uma função em java seria uma solução mais assertiva.
Desde já, meu muito obrigado pela ajuda!
One solution:
FATO:
LOAD * Inline
[
tipo,rota
carro,5
carro,7
caminhao,3
caminhao,8
];
DIMENSAO:
LOAD * Inline
[
rota_in,rota_fn,tipo,origem,destino,viagem
1,5,carro,SP,RJ,Interestadual
6,10,carro,SP,SP,Estadual
1,5,caminhao,SP,SP,Estadual
6,10,caminhao,SP,SP,Interestadual
];
Left Join (DIMENSAO)
IntervalMatch(rota, tipo)
LOAD rota_in,
rota_fn,
tipo
Resident DIMENSAO;
DROP Table FATO;
Alternatively, you can try this also:
FATO:
LOAD *,
tipo&rota as Key
Inline
[
tipo,rota
carro,5
carro,7
caminhao,3
caminhao,8
];
DIMENSAO:
LOAD *
Where Exists(Key, tipo&rota);
LOAD *,
rota_in + IterNo() - 1 as rota
While rota_in + IterNo() - 1 <= rota_fn;
LOAD * Inline
[
rota_in,rota_fn,tipo,origem,destino,viagem
1,5,carro,SP,RJ,Interestadual
6,10,carro,SP,SP,Estadual
1,5,caminhao,SP,SP,Estadual
6,10,caminhao,SP,SP,Interestadual
];
DROP Table FATO;
Obrigado pela ajuda.
Essa técnica amplia muito a aplicabilidade do QlikView !