我曾经在UI
中查询 这次,我在云外壳中,并尝试通过python访问我的数据集和表
from google.cloud import bigquery
client = bigquery.Client()
dataset_id = 'mytest-0001:reports_test'
table_id = 'test_data'
dataset_ref = client.dataset(dataset_id)
dataset = client.get_dataset(dataset_ref)
table_ref = dataset_ref.table(table_id)
table = client.get_table(table_ref)
print('Dataset ID: '.format(dataset_id))
print('Description: '.format(dataset.description))
print(table.schema)
print(table.description)
print(table.num_rows)
我在下面遇到了一些错误...
google.api_core.exceptions.BadRequest: 400 GET https://www.googleapis.com/bigquery/v2/projects/gcd-my-reporting/datasets/mytest-0001:reports_test: 数据集 ID "mytest-0001:reports_test"无效。数据集 ID 必须为 数字(加上下划线、短划线和冒号(,长度不得超过 1024 个字符。
由于某种原因,我无法修改数据集ID,有什么想法可以解决这个问题吗?
你不必修改dataset id
,只需指定dataset id
而不project id
即可。如果出于任何原因要指定项目,则必须在定义client
时执行此操作,如本文档中所述。
代码将是:
from google.cloud import bigquery
client = bigquery.Client(project='mytest-0001')
dataset_id = 'reports_test'
假设你的项目名称是mytest-0001
,你应该将数据集ID设置为'reports_test'
。看起来您在数据集 ID 中包含项目名称,这将不起作用。
您只需从dataset_id和类似中删除project_id table_id只需写入数据集和表的名称即可。
您可以使用dataset
和table
名称,如下所示:
from google.cloud import bigquery
bigqueryClient = bigquery.Client()
tableRef = bigqueryClient.dataset(datasetName).table(tableName)