2015-06-19 66 views
1

我有一個查詢在我們的MYSQL數據庫上運行。它需要永遠運行,所以我想用BigQuery來代替。相關表格(a.xxx)已經在雲端,我已經嘗試調整BQ的代碼,但我沒有任何運氣。該查詢基本上拉了一天中進行購買的個人數量,以及那些在初次購買後1-7天再次購買的個人的數量相同的個人。我將不勝感激任何幫助!!!!使用date_add函數和BQ的時間間隔翻譯MYSQL查詢的問題

下面是該查詢:

select f.fts_date, 
count(distinct f.FTS_id) as FTS_count, 
count(distinct s.passportid) as SVS_count, 
(count(distinct s.passportid)/count(distinct f.FTS_id)) as return_rate 

from 

(select passportid as FTS_id,addressid, date(signdatetime) as FTS_date from a.xxx 
where date(signdatetime)>'2015-6-10' and fts="Y" and disposition="accepted") as f 

left join a.xxx as s 
on f.passportid=s.passportid and f.addressid=s.addressid and s.disposition="accepted" and 
s.signdatetime between date_add(f.signdatetime, 1, "DAY") and date_add(f.signdatetime, 7, "DAY") 

group by 1 
+0

你能添加a.xxx表的表定義?另外這行:和fts =「N」看起來很有趣:一個別名(fts)怎麼可能是一個值「N」。也許最好不要使用也是列名的別名。 –

+0

我改變了別名和一些列名,以免混淆。最初,我改變了它,所以爲了將它發佈到在線論壇上,代碼更通用。 – Srini

+0

相關列的架構:passportid,整數,可爲空的addressid,整數,可爲空的signdatetime,時間戳,可爲空的當前錯誤爲:錯誤:ON子句必須是AND的= =每個表的一個字段名的比較,所有字段名都以表名稱。 – Srini

回答

1

的BigQuery不支持DATE_ADD函數區間的關鍵字,而應該把它寫成

date_add(FTS_date, 1, "DAY") 

https://cloud.google.com/bigquery/query-reference#datetimefunctions更多細節

+0

感謝更改後的代碼。現在我得到這個錯誤:錯誤:ON子句必須是AND的= =每個表的一個字段名稱的比較,所有字段名稱都以表名爲前綴。 – Srini

+0

@Srini嗨Srini,我認爲這會是一個更好的問題,而不僅僅是對答案的評論。 – Patrice