2016-10-06 5 views
0

"Table1"と "Table2"の2つのテーブルを結合したいと思います。 Table1の各IDについて、StartTimeとStopTimeを取得し、Table1のStartTimeとStopTimeの間にあるDateTimeを持つTable2を参照して、対応するPoint 1とPoint 2をTable 2から取得する必要があります。 on節で、私はTable1.StartTime> = Table2.DateTimeとTable1.StopTimeを確認しました< = Table2.DateTime。しかし、Googleの大規模クエリはon節で> =をサポートしていません。このための補足があるかどうかは不思議です。どんな助けもありがとう。テーブルを結合するときのOn節条件

表1:

Id StartTime     StopTime  

1 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 

表2:

Id DateTime     Point1  Point2 

1 2016-10-05 12:44:21 UTC  52.9  53.2 
2 2016-10-05 12:44:24 UTC  33.1  90.1 
3 2016-10-05 12:50:47 UTC  52.3  90.8 
4 2016-10-05 12:53:23 UTC  52.3  -111.11 

結果として生じるテーブル:BigQueryの標準SQLについて

Id StartTime     StopTime    Point1  Point2 

1 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 52.9  53.2 
2 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 33.1  90.1 
3 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 52.3  90.8 
4 2016-10-05 12:44:21 UTC 2016-10-05 12:59:31 UTC 52.3  -111.11 
+0

んBigQueryの持っているものと同じ制限が使用できますか?そうでない場合は、Cross Join +として書くことができます。条件(パフォーマンスに影響がある可能性があります) – Insac

+0

制限はBigQueryの従来のSQLにあります。標準SQLを使用する場合は、結合条件で有効なオプションがさらに多くなります。 –

答えて

2

Enabling Standard SQL参照)

SELECT Table1.Id, StartTime, StopTime, Point1, Point2 
FROM Table1 join Table2 
ON Table1.StartTime <= Table2.DateTime 
AND Table1.StopTime >= Table2.DateTime 

か、ON句で以下の場所を条件に、

ON Table2.DateTime BETWEEN Table1.StartTime AND Table1.StopTime 
関連する問題