Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal uma dúvida... tenho o seguinte cenário:
Tabela_Fato:
Chave,
cd_servico,
dt_atendimento,
vl_pago
Tabela_dim:
cd_servico,
dt_inicio_vigencia,
vl_unitario
O meu vínculo seria pelos campos cd_servico e dt_inicio_vigencia, porem eu preciso fazer a seguinte verificação o meu dt_inicio_vigencia tem que ser anterior a minha data de atendimento. Por exemplo para o serviço 1010 com dt_atendimento 01/05/19 preciso pegar o valor unitario da tabela de dimensão com os seguintes dados.
cd_servico dt_inicio_vigencia vl_unitario
1010 01/03/19 10
1010 01/04/19 15
1010 01/07/19 25
2020 01/05/19 100
2020 01/07/19 150
Nesse caso me retornaria o valor do dia 01/04, não estou conseguindo chegar na logica para trazer isso na carga.
Obrigado
Olá @mmaturana ,
Se você precisa fazer isso no Load Editor, então sugiro criar apenas uma coluna calculada na Tabela_Fato com o mesmo nome dt_inicio_vigencia onde dt_atendimento - 1 mês. Veja abaixo um exemplo:
Tabela_Fato:
load Chave,cd_servico,date#(dt_atendimento,'DD/MM/YYYY') as dt_atendimento, date(AddMonths(date#(dt_atendimento,'DD/MM/YYYY'),-1)) as dt_inicio_vigencia, vl_pago inline [
Chave,cd_servico,dt_atendimento,vl_pago,
1,1010,01/05/2019,15
];
inner join
Tabela_dim:
load cd_servico, date(date#(dt_inicio_vigencia,'DD/MM/YYYY')) as dt_inicio_vigencia, vl_unitario inline [
cd_servico,dt_inicio_vigencia,vl_unitario,
1010,01/03/2019,10,
1010,01/04/2019,15,
1010,01/07/2019,25,
2020,01/05/2019,100,
2020,01/07/2019,150
];
Saudações,
Ezir
Ezir boa tarde, me desculpe a demora para dar o retorno.
Consegui resolver essa situação utilizando o Peek para criar uma data fim de cada período, e depois utilizei o intervalmatch estendido para trazer o valor exato.
Temp2_Cotacao:
Load
DATE(FLOOR(DT_COTACAO),'DD/MM/YYYY') AS Dt_Cotacao,
Date(If(Cd_Moeda =Peek('Cd_Moeda '),
Peek('Dt_Cotacao')-1,
Today()
)) AS Dt_Final_Cotacao,
Cd_Moeda ,
Vl_Cotacao
///////////////////////////////////////////////////////
Dim_Cotacao_Moeda_Regra:
Load
Dt_Cotacao,
Dt_Final_Cotacao,
Cd_Moeda as Cd_Moeda_Regra,
Vl_Cotacao as Vl_Cotacao_Regra
from [$(VPathDimLivro)\Dim_Cotacao_Moeda.QVD] (qvd);
Invervalo_Regra:
left Join(Temp_Dim_Moeda_Proc_Cotacao)
IntervalMatch(Dt_Procedimento,Cd_Moeda_Regra)
Load
Dt_Cotacao,
Dt_Final_Cotacao,
Cd_Moeda_Regra
Resident Dim_Cotacao_Moeda_Regra;
//Cotacao:
Left Join (Temp_Dim_Moeda_Proc_Cotacao)
Load
Dt_Cotacao,
Dt_Final_Cotacao,
Cd_Moeda_Regra,
Vl_Cotacao_Regra
Resident Dim_Cotacao_Moeda_Regra;
Drop Fields Dt_Cotacao, Dt_Final_Cotacao;
Obrigado