2015-07-23 4 views
1

Недавно я начал использовать BigQuery в Python2.7, и у меня возникли проблемы с отправкой результатов запроса в таблицу.Bigquery in Python: как поместить результаты запроса в таблицу?

Мой запрос:

query_data = { 
    'configuration': { 
     'query': { 
      'query': QUERY 
      'destinationTable': { 
       'projectId': project_id, 
       'datasetId': dataset_id, 
       'tableId': 'table_id' 
      }, 
      'createDisposition': 'CREATE_IF_NEEDED', 
      'writeDisposition': 'WRITE_TRUNCATE', 
      'allowLargeResults': True 
     }, 
    } 
} 

query_request.query(projectId=PROJECT_NUMBER,body=query_data).execute() 

Согласно тому, что я прочитал в Google BigQuery documentation, destinationTable, createDisposition и writeDisposition должны гарантировать, что результат моего запроса заканчивается в выбранной таблице BigQuery.

Но это не так и я получаю эту ошибку:

HttpError: https://www.googleapis.com/bigquery/v2/projects/project_id/queries?alt=json returned "Required parameter is missing">

Знает ли кто, как исправить эту ошибку?


PS: «QUERY» работает, когда я использую его непосредственно на веб-сайте Google BigQuery, так что я очень сомневаюсь, что проблема есть.

PPS: Благодаря @ Pentium10 я смог решить проблему.

ответ

1

Вы можете сделать это, указав таблицу назначения в запросе. Вам нужно будет использовать api api, а не вызов Jobs.query, и вы должны указать writeDisposition = WRITE_APPEND и заполнить таблицу адресатов.

Вот как выглядела бы конфигурация, если бы вы использовали raw api. Если вы используете Python, клиент python должен предоставить доступ к этим же полям:

"configuration": { 
    "query": { 
    "query": "select count(*) from foo.bar", 
    "destinationTable": { 
     "projectId": "my_project", 
     "datasetId": "my_dataset", 
     "tableId": "my_table" 
    }, 
    "createDisposition": "CREATE_IF_NEEDED", 
    "writeDisposition": "WRITE_APPEND", 
    } 
} 
+0

Большое вам спасибо. –

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