簡體   English   中英

如何運行查詢以獲取過去 12 個月的結果 (BigQuery)

[英]How to run a query to get results of last 12 months ( BigQuery)

我想獲取 Big Query 表中特定 ID 過去 12 個月的記錄。 我從原始時間戳列中提取月份和年份作為單獨的列。 我嘗試使用 date_add() 和 date_diff() 但出現了一些錯誤。 我的數據集是這樣的:

Month Year MonthName    ID
8     2018   August      1
9     2018   September   2
9     2017   September   3

我怎樣才能做到這一點?

我已從原始時間戳列中將月份和年份提取為單獨的列

我建議您根據原始時間戳列進行12個月的過濾。
假設它名為ts以下是BigQuery Standard SQL

WHERE DATE(ts) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) AND CURRENT_DATE() 

例如

#standardSQL
SELECT ts, id
FROM `project.dataset.table`
WHERE id = 1
AND DATE(ts) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) AND CURRENT_DATE() 

一種方法是將年/月轉換為自某個日期起的月份。 然后對當前日期執行相同操作:

where year * 12 + month >= extract(year from current_date) * 12 + extract(month from current_date) - 12

假設您沒有將來的數據。 同樣的想法適用於將來的日期(使用<而不是> =)。

timestamp被假定為BQ表的標准時間戳命名為時間標識符字段。 因此,您可以像下面那樣過濾以僅獲取最近12個月的數據:

WHERE DATE(TIMESTAMP_MILLIS(timestamp)) BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 12 MONTH) and CURRENT_DATE()

如果您要查找過去 12 個完整月:

SELECT
  DATE_SUB((DATE_TRUNC(CURRENT_DATE(), month)), INTERVAL 1 month),
  DATE_SUB((DATE_TRUNC(CURRENT_DATE(), month)), INTERVAL 13 month)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM