экспортировать большую таблицу запросов локально - PullRequest
0 голосов
/ 18 февраля 2019

У меня есть большая таблица запросов, на которой я хотел бы запустить панду DataFrame.Таблица большая, и использование функции: pd.read_gpq () застревает и ей не удается получить данные.

Я реализовал механизм чанков, используя работающие панды, но для извлечения требуется много времени (час для 9М рядов).Так что я смотрю в новый sulotion.

Я хотел бы загрузить таблицу в виде csv-файла и затем прочитать ее.Я видел этот код в облачных документах Google:

# from google.cloud import bigquery
# client = bigquery.Client()
# bucket_name = 'my-bucket'
project = 'bigquery-public-data'
dataset_id = 'samples'
table_id = 'shakespeare'

destination_uri = 'gs://{}/{}'.format(bucket_name, 'shakespeare.csv')
dataset_ref = client.dataset(dataset_id, project=project)
table_ref = dataset_ref.table(table_id)

extract_job = client.extract_table(
    table_ref,
    destination_uri,
    # Location must match that of the source table.
    location='US')  # API request
extract_job.result()  # Waits for job to complete.

print('Exported {}:{}.{} to {}'.format(
    project, dataset_id, table_id, destination_uri))

, но все URI, показанные в примерах, являются URI-адресами облачных корзин Google, а не локальными, и мне не удалось его загрузить (попытался поставитьлокальный URI, который дал мне ошибку).

Есть ли способ загрузить данные таблицы в виде файла csv без использования корзины?

1 Ответ

0 голосов
/ 18 февраля 2019

Как уже упоминалось здесь

Ограничение при экспорте больших запросов - Вы не можете экспортировать данные в локальный файл или в Google Диск, но вы можете сохранить результаты запроса в локальномфайл.Единственным поддерживаемым местом экспорта является Cloud Storage.

Есть ли способ загрузить данные таблицы в виде файла csv без использования сегмента?

Так что теперь, какмы знаем, что мы можем сохранить результат запроса в локальном файле, чтобы вы могли использовать что-то вроде этого:

from google.cloud import bigquery

client = bigquery.Client()

# Perform a query.
QUERY = (
    'SELECT * FROM `project_name.dataset_name.table_name`')
query_job = client.query(QUERY)  # API request
rows = query_job.result()  # Waits for query to finish

for row in rows:
    print(row.name)

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...