大查询 数据集 ID 无效




我曾经在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只需写入数据集和表的名称即可。

您可以使用datasettable名称,如下所示:

from google.cloud import bigquery
bigqueryClient = bigquery.Client()
tableRef = bigqueryClient.dataset(datasetName).table(tableName)