数据库& google bigQuery客户端 - 尝试在数据框中执行BQ更新命令

时间:2017-06-22 17:00:03

标签: google-bigquery jupyter google-cloud-datalab

我有一张桌子,上面有很多(数百张)和一张桌子。稍后将有数千个我想从datalab执行的更新查询。

代码如下: 使用以下命令读取表格:

%%sql --module std_sql_table
WITH q1 as (
  SELECT *  FROM `speedy-emissary-167213.pgp_orielresearch.update_queries`
)
select * from q1

import datalab.bigquery as bq
#uses panda for the dataframe
query_table_df = bq.Query(std_sql_table).to_dataframe(dialect='standard',use_cache=True)
print(query_table_df.head(10))
col_name = list(query_table_df) # the name of the column
print(col_name)
#THIS LOOP IS FOR THE UPDATE COMMAND ROWS THAT I WANT TO EXECUTE

#for index, row in query_table_df.iterrows():
    #print "running " + row[col_name]
    #row_query = row[col_name] 
    #query_result_row_df = bq.Query(row_query).to_dataframe(dialect='standard',use_cache=True)

输出如下,我想执行表格中的每一行: 0更新speedy-emissary-167213.pgp_orielresear... 1 UPDATE speedy-emissary-167213.pgp_orielresear ... 2更新speedy-emissary-167213.pgp_orielresear... 3 UPDATE speedy-emissary-167213.pgp_orielresear ... 4更新speedy-emissary-167213.pgp_orielresear... 5 UPDATE speedy-emissary-167213.pgp_orielresear ... 6更新speedy-emissary-167213.pgp_orielresear... 7 UPDATE speedy-emissary-167213.pgp_orielresear ... 8更新speedy-emissary-167213.pgp_orielresear... 9 UPDATE speedy-emissary-167213.pgp_orielresear ... [U' F0 _']

任何想法都非常受欢迎!

1 个答案:

答案 0 :(得分:1)

请阅读以下文档: https://cloud.google.com/bigquery/docs/reference/standard-sql/data-manipulation-language

基本上,您需要合并更新语句,否则您将遇到配额问题,支付的费用远远超过需要并且会降低性能。 Bigquery适用于分析,但不应将其视为通用数据库。