您好,我在datalab上使用ipython笔记本时遇到了问题。
我想将表的结果写入bigQuery表但是它不起作用,任何人都说使用insert_data(dataframe)函数,但它不会填充我的表。 为了简化问题,我尝试读取一个表并将其写入刚刚创建的表(具有相同的模式),但它不起作用。谁能告诉我哪里错了?
import gcp
import gcp.bigquery as bq
#read the data
df = bq.Query('SELECT 1 as a, 2 as b FROM [publicdata:samples.wikipedia] LIMIT 3').to_dataframe()
#creation of a dataset and extraction of the schema
dataset = bq.DataSet('prova1')
dataset.create(friendly_name='aaa', description='bbb')
schema = bq.Schema.from_dataframe(df)
#creation of the table
temptable = bq.Table('prova1.prova2').create(schema=schema, overwrite=True)
#I try to put the same data into the temptable just created
temptable.insert_data(df)
答案 0 :(得分:1)
调用insert_data将执行HTTP POST并在完成后返回。但是,数据显示在BQ表中可能需要一些时间(最多几分钟)。在使用该表之前,请稍等片刻。我们可能会在将来的更新see this
中解决此问题现在阻止直到准备好的hacky方式应该是这样的:
import time
while True:
info = temptable._api.tables_get(temptable._name_parts)
if 'streamingBuffer' not in info:
break
if info['streamingBuffer']['estimatedRows'] > 0:
break
time.sleep(5)