2016-02-26 9 views
1

Привет У меня проблема при использовании ноутбуков ipython на datalab.Datalab не заполняет таблицы bigQuery

Я хочу написать результат таблицы в таблицу 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) 

ответ

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) 

 Смежные вопросы

  • Нет связанных вопросов^_^