簡體   English   中英

Google BigQuery:創建表時將日期添加到表名

[英]Google BigQuery: Add date to table name when creating a table

我正在編寫一個我計划使用 Big Query UI 安排的查詢。

我想在此表中添加一個等於 CURRENT_DATE 的 _TABLE_SUFFIX。

我怎樣才能做到這一點?

這是我正在處理的查詢:

IF 
  today != DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH), INTERVAL 1 DAY)
THEN 
  CREATE TABLE `project.dataset.tablename_<insert_current_date_here>`
  AS
  SELECT CURRENT_DATE() as today;
END IF;

最好的辦法是動態生成查詢,然后靜態執行它。

這可以使用 python 之類的東西來完成。

從日期時間導入日期時間

def get_query():
    return '''IF 
    today != DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH), INTERVAL 1 DAY)
    THEN 
    CREATE TABLE `project.dataset.%s`
    AS
    SELECT CURRENT_DATE() as today;
    END IF;''' % str(datetime.now())

BigQuery 支持用於計划查詢中的目標表名稱的模板系統 要將當前日期添加到表名,請使用提供的模板語法。 例如, tablename_{run_time|"%Y%m%d"}將輸出tablename_YYYYMMDD

bigquery 計划查詢設置

您可以(是否應該是另一個爭論)通過 BQ 的SQL 過程語言功能創建動態表名,特別是EXECUTE IMMEDIATE語句。

例如

DECLARE today STRING DEFAULT STRING(DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH), INTERVAL 1 DAY));

EXECUTE IMMEDIATE format("""
CREATE TABLE `project.dataset.tablename_%s` AS
SELECT CURRENT_DATE() as today
""", today);

有關更多信息,請參閱towardsdatascience.com/how-to-use-dynamic-sql-in-bigquery

請注意,您現在可能還會遇到EXECUTE IMMEDIATE的錯誤位置問題,如果是這樣,請嘗試Processing location in Query Settings ,請參見此處

暫無
暫無

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

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