![](/img/trans.png)
[英]BigQuery scheduled queries - Create table and add date suffix to its name in a different project
[英]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
。
您可以(是否應該是另一個爭論)通過 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.