BigQuery में, मैं कोशिश कर रहा हूँ लिखने के लिए एक क्वेरी के बीच दूरी की गणना शुरू और अंत की तारीख के लिए प्रत्येक आईडी. मैं नहीं कर रहा हूँ में रुचि के अंक के बीच में उन तारीख के बीच है । मैं केवल जरूरत हड़पने के लिए अक्षांश/लंबे समय के शुरू और अंत की तारीख और इयूक्लिडियन दूरी की गणना.
तालिका 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