簡體   English   中英

如何使用間隔交叉加入 Big Query?

[英]How to cross join in Big Query using intervals?

如何在 Google Big Query 中使用間隔連接兩個表?

我有兩個表:

Table CarsGPS:
ID | Car | Latitude | Longitude
1  | 1   | -22.123  | -43.123
2  | 1   | -22.234  | -43.234
3  | 2   | -22.567  | -43.567
4  | 2   | -22.678  | -43.678
...

Table Areas:
ID | LatitudeMin | LatitudeMax | LongitudeMin | LongitudeMax
1  | -22.124     | -22.120     | -43.124      | -43.120
2  | -22.128     | -22.124     | -43.128      | -43.124
...

我想交叉連接這些表,以使用 Google Big Query 檢查每輛車經過的區域。

在常規的 SQL 服務器中,我會制作:

SELECT A.ID, C.Car 
FROM Cars C, Areas A
WHERE C.Latitude BETWEEN A.LatitudeMin AND A.LatitudeMax AND
      C.Longitude BETWEEN A.LongitudeMin AND A.LongitudeMax

但是 Google Big Query 只允許我使用連接表之間的精確匹配來進行連接(甚至 JOIN EACH)。 而“FROM X, Y”是指 UNION,而不是 JOINS。

所以,這不是一個選項:

SELECT A.ID, C.Car 
FROM Cars C
JOIN EACH
  Areas A
  ON C.Latitude BETWEEN A.LatitudeMin AND A.LatitudeMax AND
     C.Longitude BETWEEN A.LongitudeMin AND A.LongitudeMax

那么,我怎樣才能運行類似的東西來識別每個區域內有哪些汽車經過呢?

BigQuery 現在支持 CROSS JOIN。 您的查詢如下所示:

SELECT A.ID, C.Car 
FROM Cars C 
CROSS JOIN Areas A
WHERE C.Latitude BETWEEN A.LatitudeMin AND A.LatitudeMax AND
  C.Longitude BETWEEN A.LongitudeMin AND A.LongitudeMax

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM