A entrada anterior serviu para resolver um problema, mas o problema inicial não foi aquele.
Se bem se lembram, resolvemos os casos em que um preço é semanal mas que, em certas situações muda a meio da semana. Para quem não viu, fica aqui o link.
Vamos resolver a questão de base:
Quero saber o preço de um produto para um certo dia, mas a tabela de preços tem um intervalo.
Pegamos num dataset de exemplo, daqueles que só aparecem em demos.
Produto A vendido no país J na data de 01 de janeiro… a que preço?
“Vê-se logo” que é 598,47. Para este caso temos a data de venda coincidentemente no início de um intervalo, mas para a segunda venda, dia 10 de janeiro? Fácil, temos o intervalo de 08 a 14 de janeiro, logo o preço foi 596,82.
Como colocar isso em Power Query?
Há muitas maneiras, posso dar sempre a resposta do programador: depende. Mas também posso fazer da maneira que considero a melhor.
No fundo, precisamos de um join entre as duas tabelas pela “chave” (neste caso o produto e país) para uma certa data que está entre a inicial e final de um intervalo.
Dois passos.
Vamos ao primeiro.
Join entre as duas tabelas pela chave
Ficamos com uma coluna que tem, em tabela, todas as datas para o produto e país. Não queremos isso, queremos apenas a linha que tenha a data incluída no intervalo.
Esse é o segundo passo, filtrar as linhas que precisamos.
Aqui o código parece um pouco mais complicado, mas não é.
let _data = [data] in Table.SelectRows([#"Tabela de Preços (Base)"], each [data_inicial] <= _data and [data_final] >= _data)
Em português: vou guardar a data e depois vou seleccionar as linhas dentro da tabela que está dentro da coluna “Tabela de Preços (Base)” em que a data seja maior que a data_inicial e menor que a data_final.
Resultado?
Expandimos a coluna que nos interessa
E chegamos ao resultado pretendido.