1

嗨,我在 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)
4

1 回答 1

1

调用 insert_data 将执行 HTTP POST 并在完成后返回。但是,数据显示在 BQ 表中可能需要一些时间(最多几分钟)。在使用桌子之前尝试等待一段时间。我们可能会在未来的更新中解决这个问题,请参阅此

阻止直到现在准备好的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)
于 2016-02-27T00:08:06.167 回答