2016-05-02 11 views
3

私はPARTITION BYと組み合わせてLAG関数を使用してタイムスタンプの差を計算しようとしています。bigqueryでPARTITION BYを使用した解析機能がありません

SELECT 
uuid, 
event_info, 
TIMESTAMP_TO_MSEC(event_time) - LAG(TIMESTAMP_TO_MSEC(event_time),1) OVER (PARTITION BY userId ORDER BY event_time ASC) 
FROM 
[DataSet.TableName] 
ORDER BY 
uuid, 
event_time 

しかし、それは言ったBigQueryからエラー発生「エラー:で解析式で行方不明の機能を:4.95から4.153」しかし

、私は

TIMESTAMP_TO_MSEC(event_time) as time, 
LAG(TIMESTAMP_TO_MSEC(event_time),1) OVER (PARTITION BY userId ORDER BY event_time ASC) as previousTime, 
ように2つの部分に行4行を分割する場合

それはうまく動作します。回避策は、私が

previousTime - time as difference 

として計算を行うことができるように、上記の「修正」を使用し、その後、別のクエリにクエリ全体をラップするだろう。しかし、それは少しハックや他のSQLバリアントにはないようですクエリに問題があります。

誰にも提案はありますか?

おかげで、

これはBigQueryのの標準のSQL方言で固定しなければならない

答えて

3

ブラッド - https://cloud.google.com/bigquery/sql-reference/enabling-standard-sql

。なお、代わりのレガシーSQLでTIMESTAMP_TO_MSEC機能は、あなたが同等のUNIX_MILLIS機能を使用する必要があります。

+0

ありがとうMosha。そのオプションを選択してビューとして保存すると、そのオプションがビューと一緒に保存されると思いますか? –

+0

申し訳ありません - 標準SQLのビューはまだサポートされていませんが、まもなく公開予定です。 –

+0

よろしくお願いいたします。それがいつ起こるか、どんな考えですか? –

関連する問題