Google bigquery 大查询:如何使用具有列名的变量和循环

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子句来获取一些值,并使用它们来 更新期间列

我正在尝试使用循环更新Bigquery中的表。我的表结构如下(有100列和数千行):

日期 周期1 周期2 第3期 第4期 第5期 第6期 时期 周期100 2021-01-01 一行 2021-02-01 一行
为此,您可以尝试使用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/控制台