0

bigqueryに非正規化されたデータがあります。

User,   Cities Lived, Time,  Other properites
A       LD            1942
A       SF            1902
A       LA            2004
A       TK            2012
B       SF            1935
B       SD            1972
B       LA            1899
C       ...

LAに住む前にSFに住んでいたユーザーを見つける最も効率的な方法は何ですか?

出力はリストである可能性があります。上記の場合、「A」のみが表示されます。

リストに日付と都市の両方が含まれているとよいでしょう。

A, 1902, SF, 2004, LA
...
4

2 に答える 2

1

JOINを使用して、必要な結果を計算できます。

SELECT la_table.user as user, la_table.city, la_table.time,  
  sf_table.city, sf_table.time 
FROM (
  SELECT user, time, city as la from yourTable where city = "LA") as la_table
JOIN EACH (
  SELECT user, time, city as la from yourTable where city = "SF") as sf_table
ON la_table.user = sf_table.user
WHERE la_table.time > sf_table.time

テーブルのサイズが大きくなる可能性があるため、join句の「EACH」に注意してください。BigQueryJOINリファレンスをご覧ください。

于 2013-03-25T15:57:50.887 に答える
0

(擬似コード)(SELECT TIME AS LA_TIME where Cities = LA GROUP BY User)のようなものに参加し、TIME_LA> TIME where city=SFのすべての行にマークを付ける必要があると思います。OUTPUTは、この「ヘルプ」列のHAVING句によってフィルタリングされます。

最後のBQ更新後、ネストされたselectの出力のサイズによって制限されるべきではありません。

于 2013-03-25T08:54:04.717 に答える