[英]Get data when date is equal to or greater than 90 days ago
我想知道這里是否有人可以為我正在研究的 BigQuery 提供幫助。 當最后一次交互時間等於或大於 90 天前時,我正在嘗試從數據集中提取日期 email 和最后一次交互時間。
我有以下查詢:
SELECT
date,
user_email,
DATE_FROM_UNIX_DATE(gmail.last_interaction_time) AS Last_Interaction_Date,
DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY) AS Days_ago
FROM
`bqadminreporting.adminlogtracking.usage`
WHERE
'Last_Interaction_Date' >= 'Days_ago'
但是,我遇到以下錯誤:
DATE 值超出允許范圍:從 0001-01-01 到 9999-12-31
據我所知,這是有道理的——所以不完全確定它為什么會拋出錯誤?
看起來您在提交的gmail.last_interaction_time
中有一些不一致的值(數據),您需要對其進行處理以避免錯誤。
此外,上述查詢不會按照您預期的 WHERE 條件工作,您應該使用以下查詢來獲得預期的 output。
SELECT * FROM
(SELECT
date,
user_email,
DATE_FROM_UNIX_DATE(gmail.last_interaction_time) AS Last_Interaction_Date,
DATE_ADD(CURRENT_DATE(), INTERVAL -90 DAY) AS Days_ago
FROM
`bqadminreporting.adminlogtracking.usage`)
WHERE
Last_Interaction_Date >= Days_ago
據推測,您的問題是DATE_FROM_UNIX_DATE()
。 如果沒有樣本數據,實際上不可能確定問題所在。
但是,您無需轉換為日期即可執行此操作。 您可以在 Unix 秒空間中完成所有工作:
select u.*
from `bqadminreporting.adminlogtracking.usage` u
where gmail.last_interaction_time >= unix_seconds(timestamp(current_date)) - 90 * 60 * 60 * 24
請注意,我懷疑問題在於last_interaction_time
實際上以毫秒或微秒或其他單位為單位。 這將防止你的錯誤,但它可能不會做你想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.