Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
lcarlos_pe
Contributor III
Contributor III

Interval Match para Slowly Changing Dimension

Fala pessoal, tudo bem,

Vejam se vocês podem me ajudar, preciso fazer criar uma tabela que mantenham os dados históricos e pelo que li, posso fazer isso via interval match, porém, nos casos que vi como exemplo sempre exite uma tabela que já guarda a alteração em uma das tabelas.

Meus dados atuais:

Produto:

Id_produtoCustoDt_ult_compra
12,0020/2/2016
23,0020/2/2016

Vendas:

DataId_ProdutoPreçoVenda
24/2/201614,00
24/2/201626,00

Como devo proceder para que a cada mudança de valor da coluna custo, seja criada uma nova linha com o mesmo id de produto e uma nova data de alteração.

Deve ficar assim:

Produto:

Id_produtoCustoData_InicioData_Fim
12,0020/2/201631/12/2099
23,0020/2/201622/2/2016
23,5023/2/201631/12/2099

Agradeço!

Labels (2)
9 Replies
nicolett_yuri

Luiz, isso não tem relação com o IntervalMatch.

Como você sabe que o valor do produto alterou? Precisa ter alguma data ou coluna informando a mudança, correto?

Clever_Anjos
Employee
Employee

De onde você tirou aquelas mudanças de custo? Deve basear-se nelas para gerar sua tabela a ser usada pelo IntervalMatch()    

lcarlos_pe
Contributor III
Contributor III
Author

Yuri, obrigado pela resposta.

Na tabela original eu tenho: Id_Produto (chave), Custo (valor) e dt_ult_compra(Data), este último é campo que vai ser o gatilho e se transformará da Data_Inicio, para Data_Fim eu irei criar uma variavel

    let v_datafim = date#(date('31/12/2099'))

quando o campo dt_ult_compra for alterado eu preciso que na tabela produto seja criado um novo registro e no registro anterior ele vai atualizar o campo Data_Fim, como a tabela abaixo no produto 2.


Produto:

Id_produtoCustoData_InicioData_Fim
12,0020/2/201631/12/2099
23,0020/2/201622/2/2016
23,5023/2/201631/12/2099
cesaraccardi
Specialist
Specialist

Ola Luiz,

Se entendi direito voce tem uma tabela Produto com o ultimo valor de custo somente e gostaria de criar um historico das alteracoes? Se for este o caso voce precisa criar uma carga incremental para armazenar as mudancas ou caso tenha a tabela de pedido de compra dos produtos voce teria que carrega-la tambem para obter os custos.

lcarlos_pe
Contributor III
Contributor III
Author

Oi Clever,

o sistema só me dá um campo que traz a data de ultima compra (esse vai ser o custo assumido), então vou criar uma pensei em criar uma variavel para determinar a datafinal, só que quando houver uma alteração nesse campo, preciso que a data do novo custo seja a data fim do registro e também seja criado um novo registro para este mesmo produto, com novo custo, data_inicio e data_fim (variável).

Produto:

Id_produtoCustoData_InicioData_Fim
23,0020/2/201622/2/2016
23,5023/2/201631/12/2099
Clever_Anjos
Employee
Employee

Você só tem a data da última compra? Não tem acesso a todas as compras?

lcarlos_pe
Contributor III
Contributor III
Author

Tenho sim, em outra tabela: "compras".

idcompra, nfcompra, fornecedor, qtd, volume (e etc..)  ...

Só que no meu caso, pode ser que tenham várias compras do mesmo produto no mesmo dia, e eu precisaria fazer uma média ponderada para ter um preço médio, então acho que seria um pouco mais complicado, porém, sei que também é viável.

lcarlos_pe
Contributor III
Contributor III
Author

Oi Cezar!

entendi a ideia, como você faz se precisar recarregar toda a base ... de uma até a data atual, por exemplo. Eu não perderia esse histórico criado?

Clever_Anjos
Employee
Employee

Já achou uma solução? Se sim, marque uma das respostas como "Correta" para fechar o tópico e nos ajudar a manter o forum organizado.

Como obter ajuda? Leia antes de postar