Google bigquery Google API从BigQuery表获取数据

Google bigquery Google API从BigQuery表获取数据,google-bigquery,google-apis-explorer,Google Bigquery,Google Apis Explorer,我试图用Python从BigQuery表中获取数据。我知道,BigQuery连接器是可用的,我可以使用它导出表。然而,我不想涉及到GCS(谷歌云存储),而这正是事情变得棘手的地方 我可以看到很少有API调用可以通过它获取整个表数据。 另一种方法是我可以查询BigQuery表。 但是,我无法理解使用Python或JAVA查询这些API的确切方式 如何创建客户端?或者如何认证 如@GrahamPolley所述,您可以按照以下说明进行操作: 验证: 要运行客户端库,必须首先通过设置身份验证 创建服

我试图用Python从BigQuery表中获取数据。我知道,BigQuery连接器是可用的,我可以使用它导出表。然而,我不想涉及到GCS(谷歌云存储),而这正是事情变得棘手的地方

我可以看到很少有API调用可以通过它获取整个表数据。

另一种方法是我可以查询BigQuery表。

但是,我无法理解使用PythonJAVA查询这些API的确切方式


如何创建客户端?或者如何认证

如@GrahamPolley所述,您可以按照以下说明进行操作:

验证:

要运行客户端库,必须首先通过设置身份验证 创建服务帐户并设置环境变量

创建客户端:

BigQueryClient client = BigQueryClient.Create(projectId);
对于浏览选定表中的数据,您可以使用以下示例:

#来自google.cloud导入bigquery
#client=bigquery.client()
dataset\u ref=client.dataset('samples',project='bigquery-public-data')
table_ref=数据集_ref.table('shakespeare'))
table=client.get_table(table_ref)#API调用
#从表中加载所有行
行=客户端。列表\行(表)
断言len(列表(行))==table.num\u行
#加载前10行
行=客户端。列出行(表,最大结果=10)
断言len(列表(行))==10
#指定所选字段以将结果限制为特定列
fields=table.schema[:2]#前两列
行=客户端。列出行(表,所选字段=字段,最大结果=10)
断言len(rows.schema)==2
断言len(列表(行))==10
#使用开始索引加载表的任意部分
行=客户端。列出行(表,开始索引=10,最大结果=10)
#以表格格式打印行数据

format_string='{!s:@ElliottBrossard我知道如何为bigquery创建客户端,但它没有执行此REST调用的方法。它甚至有一个名为“浏览表中选定的行”的示例,您的意思是“但是我不想涉及GCP”?BigQuery是GCP的一部分,因此您已经在使用该平台。您建议的方式无法扩展。最好的选择是导出到GCS,下载并读入您正在构建的任何应用程序。@GrahamPolley我的意思是不想在GCS中存储任何临时内容
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