Google API для получения данных из BigQuery Table - PullRequest
0 голосов
/ 23 июня 2018

Я пытаюсь получить данные из BigQuery Table с помощью Python. Я знаю, что BigQuery Connector доступен, и я могу экспортировать таблицу, используя это. Однако я не хочу привлекать GCS (Google Cloud Storage) и то, где все становится сложнее.

Я мог видеть, что есть несколько вызовов API, через которые я могу получить данные всей таблицы. https://cloud.google.com/bigquery/docs/reference/rest/v2/tabledata/list

И еще один способ - я могу запросить таблицу BigQuery. https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query

Однако я не могу понять, как именно мне нужно запрашивать эти API, используя Python или JAVA ?

Как создать клиента? или как аутентифицировать?

1 Ответ

0 голосов
/ 01 июля 2018

Как упомянуто @GrahamPolley, вы можете следовать документации , где объясняется, как:

Аутентифицировать:

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

export GOOGLE_APPLICATION_CREDENTIALS="/path/to/auth/[FILE_NAME].json"

Создать клиента:

BigQueryClient client = BigQueryClient.Create(projectId);

А для просмотра данных в выбранной таблице вы можете использовать пример из официальной документации библиотеки :

# from google.cloud import bigquery
# client = bigquery.Client()

dataset_ref = client.dataset('samples', project='bigquery-public-data')
table_ref = dataset_ref.table('shakespeare')
table = client.get_table(table_ref)  # API call

# Load all rows from a table
rows = client.list_rows(table)
assert len(list(rows)) == table.num_rows

# Load the first 10 rows
rows = client.list_rows(table, max_results=10)
assert len(list(rows)) == 10

# Specify selected fields to limit the results to certain columns
fields = table.schema[:2]  # first two columns
rows = client.list_rows(table, selected_fields=fields, max_results=10)
assert len(rows.schema) == 2
assert len(list(rows)) == 10

# Use the start index to load an arbitrary portion of the table
rows = client.list_rows(table, start_index=10, max_results=10)

# Print row data in tabular format
format_string = '{!s:<16} ' * len(rows.schema)
field_names = [field.name for field in rows.schema]
print(format_string.format(*field_names))  # prints column headers
for row in rows:
    print(format_string.format(*row))      # prints row data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...