Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

IntervalMatch com Critério

Boa Noite,

Estou tentando consolidar em uma tabela fato alguns campos de um tabela de dimensão.

FATO:

fato.JPG

DIMENSÃO:

dimensao.JPG

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:

resultado.JPG

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!

Labels (4)
1 Solution
4 Replies
sunny_talwar

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;

Capture.PNG

sunny_talwar

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;

Not applicable
Author

Obrigado pela ajuda.

Essa técnica  amplia muito a aplicabilidade do QlikView !