Google bigquery 大查询:如何使用具有列名的变量和循环
我正在尝试使用循环更新Bigquery中的表。我的表结构如下(有100列和数千行): 日期 周期1 周期2 第3期 第4期 第5期 第6期 时期 周期100 2021-01-01 一行 2021-02-01 一行Google bigquery 大查询:如何使用具有列名的变量和循环,google-bigquery,dml,Google Bigquery,Dml,我正在尝试使用循环更新Bigquery中的表。我的表结构如下(有100列和数千行): 日期 周期1 周期2 第3期 第4期 第5期 第6期 时期 周期100 2021-01-01 一行 2021-02-01 一行 为此,您可以尝试使用BigQueryAPI客户端库。 有更多的语言可用,但我在这里使用python。 您可以直接在cloud shell中启动。您可以在那里编写Python程序 做好你的工作 关于您的要求,我有一些假设: 您希望使用SELECT子句来获取一些值,并使用它们来 更新期间列
为此,您可以尝试使用BigQueryAPI客户端库。 有更多的语言可用,但我在这里使用python。 您可以直接在cloud shell中启动。您可以在那里编写Python程序 做好你的工作 关于您的要求,我有一些假设: 您希望使用SELECT子句来获取一些值,并使用它们来 更新期间列的值
from google.cloud import bigquery
''' Construct a BigQuery client object. '''
client = bigquery.Client()
query = """
select col_name from `projectID.dataset.table`
where condition
"""
''' Make an API request. '''
query_job = client.query(query)
''' Store the value of query result in some variable (value). '''
for row in query_job:
value = row[0]
'''
Creating the query to update the columns using the value.
UPADTE `projectID.dataset.table`
SET Period1 = Period1 + value, Period2 = Period2 + value ...
where condition
'''
query = "UPDATE `projectID.dataset.table` SET "
for i in range(1,101):
query += 'period'+str(i)+' = ' + 'period'+ str(i) + ' + ' +str(value) +','
query = query[0:-1]
query += ' WHERE condition'
''' Make an API request. '''
query_job = client.query(query)
所有BigQuery Update语句都必须有WHERE子句。如果你
要更新所有行,而不是条件为TRUE的行。感谢Chandra的回复。不幸的是,这对于我的用例来说太复杂了,我需要将选项限制为BigQueryUI/控制台