我試圖在BigQuery中運行查詢,但收到「查詢執行期間超出資源」。在BigQuery中優化查詢
其實,我有兩個表:
Table user:
Id | User | Latitude | Longitude
1 | 1 | 50.83 | 4.01
2 | 1 | 50.84 | 4.03
3 | 2 | 48.78 | 2.87
4 | 3 | 47.42 | 8.53
…
Table point_of_interest:
Id | Latitude | Longitude | Range | Tag
1 | 50.81 | 3.98 | 0.05 | a;b;c;d
2 | 50.85 | 4.03 | 0.025 | a;c;e;f
3 | 40.80 | 3.87 | 0.04 | a;d;g
4 | 47.42 | 8.57 | 0.08 | b
…
目的是聯接表來標記的緯度,經度和範圍內的所有用戶。
對於這一點,我使用的查詢:
SELECT
u.User AS id,
GROUP_CONCAT(poi.Tag) AS tag
FROM (
SELECT
u.User,
poi.Tag,
FROM
[user] u
CROSS JOIN
[point_of_interest] poi
WHERE
u.Latitude BETWEEN poi.Latitude – poi.Range AND poi.Latitude + poi.Range
AND
u.Longitude BETWEEN poi.Longitude – poi.Range AND poi.Longitude + poi.Range)
GROUP BY
id
用戶表目前是520 MB和point_of_interest表只有565 KB,但可能會在時間成長。
我想知道是否有更好的方法來實現這個目標,以及最好的體系結構。
編輯:
我還使用了一系列LEFT JOIN EACH
但BigQuery的只支持ON
關鍵字後平等陳述嘗試。
不是大小,但記錄的數量很重要。每張表中的記錄數是多少? – Pentium10
您是否嘗試過「GROUP BY BY BY」?您是否仍然超出資源? – Pentium10
我嘗試了GROUP EACH BY,並得到相同的錯誤。用戶表包含3 000 000條記錄和point_of_interest表100 000. – Nexus