ใน BigQuery ฉันกำลังพยายามเขียน query นั่น calculates ระยะห่างระหว่างที่เริ่มและวันสิ้นสุดสำหรับแต่ละบัตรประจำตัวครรับ ฉันไม่สนใจคะแนนระหว่างพวกนั้นวันที่ช่วง. ฉันแค่ต้องหยิบ lat/นานของคนเริ่มและวันสิ้นสุดแล้วคำนวณ euclidean รักษาระยะห่าง
โต๊ะ 1 ดูเหมือนนี้:
ID startdate enddate
A 2016-9-16 2016-10-9
A 2017-3-18 2017-4-9
โต๊ะ 2 มีพิกัดและดูเหมือนนี้:
ID Date Latitude Longitude
A 2016-9-16 40.76 -109.33
A 2016-9-17 40.72 -109.33
A 2016-10-9 40.75 -109.33
A 2017-3-18 40.81 -109.33
A 2017-4-8 40.83 -109.33
A 2017-4-9 40.96 -109.32
ฉันปรารถนาผลลัพธ์ของมันคงดูเหมือน:
ID t1.startdate t2.Latitude t2.Longitude t1.enddate t2.Latitude t2.Longitude distance
A 2017-3-18 40.81 -109.33 2017-4-9 40.96 -109.32 150
A 2016-9-16 40.76 -109.33 2016-10-9 40.75 -109.33 200
นี่ใกล้ที่สุดเท่าที่ฉันเคยได้แต่งตั้งแต่นั้นสามารถเป็นหลายหมายเลขของมันไม่ตรงกับที่ถูกต้องวันเริ่มและวันสิ้นสุดสำหรับแต่ละตัว:
SELECT
t1,t2,
ST_DISTANCE(Point1, Point2 ) as distance
from (
SELECT
ID,
st_geogpoint(Longitude,Latitude) as Point1
from `t2` AS t2 INNER JOIN
`t1` AS t1 ON t1.ID = t2.ID
WHERE t1.ID = t2.ID AND
t2.Date = t1.startdate ) t1,
(
SELECT
ID,
st_geogpoint(Longitude, Latitude) as Point2
from `t2` AS t2 INNER JOIN
`t1` AS t1 ON t1.ID = t2.ID
WHERE t1.ID = t2.ID AND
t2.Date = t1.enddate
) t2
WHERE t1.ID = t2.ID
ปัจจุบันผลตรวจดูเหมือน:
ID t1.startdate t2.Latitude t2.Longitude t1.enddate t2.Latitude t2.Longitude distance
A 2016-9-16 40.76 -109.33 2016-10-9 40.75 -109.33 150
A 2016-9-16 40.76 -109.33 2017-4-9 40.96 -109.32 250
A 2017-3-18 40.81 -109.33 2017-4-9 40.96 -109.32 200
A 2017-3-18 40.81 -109.33 2016-10-9 40.75 -109.33 250