Estamos tentando combinar eventos com linhas com base na distância geográfica mais próxima
--pseudo code
LATERAL JOIN (
SELECT line_id, geom
FROM lines
ORDER by distance(lines.geom, events.geom)
LIMIT 1) nearest_line
Às vezes, surpreendentemente, há empates. Queremos garantir que, se nosso pipeline de ETL for executado novamente com os mesmos conjuntos de dados, as mesmas linhas sejam retornadas. Uma ideia foi incluir line_id
no ORDER BY
, mas isso poderia distorcer nossa correspondência para valores mais baixos line_id
. Existe alguma maneira de desfazermos os empates aleatoriamente, produzindo a mesma saída se nosso ETL tivesse que ser refeito nos mesmos conjuntos de dados?
Eu estava pensando em algo como, random()
mas definir a semente com base em uma combinação de event_id
e line_id
. Algo como usar mod()
nos IDs poderia ser... OK?