Как загрузить все данные в наборе данных Google BigQuery?

Есть ли простой способ напрямую загрузить все данные, содержащиеся в определенном наборе данных, в Google BigQuery? На самом деле я загружаю "as csv", делая один запрос за другим, но это не позволяет мне получить более 15 000 строк, а количество строк, которые мне нужно загрузить, превышает 5 миллионов. Спасибо

3 ответа

Решение

Вы можете запускать задания извлечения BigQuery с помощью веб-интерфейса, инструмента командной строки или API-интерфейса BigQuery. Данные могут быть извлечены

Например, используя инструмент командной строки:

Сначала установите и выполните авторизацию, используя следующие инструкции: https://developers.google.com/bigquery/bq-command-line-tool-quickstart

Затем убедитесь, что у вас есть доступное хранилище Google Cloud Storage (для этого см. Google Cloud Console).

Затем выполните следующую команду: bq extract my_dataset.my_table gs: //mybucket/myfilename.csv

Подробнее о извлечении данных с помощью API можно прочитать здесь: https://developers.google.com/bigquery/exporting-data-from-bigquery

Подробные пошаговые инструкции по загрузке большого запроса

  1. включить биллинг

    Вы должны указать номер своей кредитной карты в Google, чтобы экспортировать вывод, и вам, возможно, придется заплатить.

    Но свободной квоты (1 ТБ обработанных данных) должно хватить для многих хобби-проектов.

  2. создать проект

  3. привязать выставление счетов к проекту

  4. сделай свой запрос

  5. создать новый набор данных

  6. нажмите "Показать параметры" и включите "Разрешить большие результаты", если результат очень большой

  7. экспортировать результат запроса в таблицу в наборе данных

  8. создать ведро в облачном хранилище.

  9. экспортировать таблицу в созданную папку в облачном хранилище.

    • убедитесь, что нажали GZIP сжатие

    • используйте имя как <bucket>/prefix.gz,

      Если вывод очень большой, имя файла должно быть звездочкой * и вывод будет разделен на несколько файлов.

  10. загрузите таблицу из облачного хранилища на свой компьютер.

    Кажется невозможным загрузить несколько файлов из веб-интерфейса, если большой файл разделен, но вы можете установить gsutil и запустить:

    gsutil -m cp -r 'gs://<bucket>/prefix_*' .
    

    См. Также: Загрузка файлов и папок из корзины Google Storage в локальную папку.

    E сть gsutil в Ubuntu 16.04, но это не связанный пакет.

    Вы должны установить и настроить, как описано в:

  11. разархивировать локально:

    for f in *.gz; do gunzip "$f"; done
    

Для python вы можете использовать следующий код, он будет загружать данные как фрейм данных.

from google.cloud import bigquery
def read_from_bqtable(bq_projectname, bq_query):
    client = bigquery.Client(bq_projectname)
    bq_data = client.query(bq_query).to_dataframe()
    return bq_data  #return dataframe

bigQueryTableData_df = read_from_bqtable('gcp-project-id', 'SELECT * FROM `gcp-project-id.dataset-name.table-name` ')

Да, шаги, предложенные Майклом Манучехри, являются правильным и простым способом экспорта данных из Google Bigquery.
Я написал скрипт bash, чтобы вам не приходилось каждый раз выполнять эти шаги, просто используйте мой скрипт bash. Ниже приведены ссылки на github: https://github.com/rajnish4dba/GoogleBigQuery_Scripts

объем:
1. экспорт данных на основе вашего большого запроса SQL.
2. экспорт данных на основе вашего имени таблицы.
3. перенести файл экспорта на сервер SFtp.
попробуйте и дайте мне знать ваши отзывы.
чтобы помочь использовать ExportDataFromBigQuery.sh -h

Другие вопросы по тегам