BigQuery 数据集 ID 无效

Posted

技术标签:

【中文标题】BigQuery 数据集 ID 无效【英文标题】:BigQuery Invalid dataset ID 【发布时间】:2018-05-14 03:32:19 【问题描述】:

我曾经在 UI 中查询 这一次,我在cloud shell中,尝试通过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 必须是 al 字母数字(加上下划线、破折号和冒号),并且长度不得超过 1024 个字符。

由于某种原因,我无法修改数据集 ID,有什么想法可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

您不必修改dataset id,只需指定不带project iddataset id。如果您出于任何原因要指定项目,则必须在定义 client 时按照 this document 中的说明进行操作。

代码将是:

from google.cloud import bigquery

client = bigquery.Client(project='mytest-0001')
dataset_id = 'reports_test'

【讨论】:

感谢您的帮助!我很感激。【参考方案2】:

假设您的项目名称为mytest-0001,则应将数据集 ID 设置为'reports_test'。您似乎在数据集 ID 中包含项目名称,这将不起作用。

【讨论】:

【参考方案3】:

您只需从 dataset_id 中删除 project_id 并与 table_id 类似,只需写入数据集和表的名称即可。

【讨论】:

【参考方案4】:

您可以像这样使用datasettable 名称:

from google.cloud import bigquery

bigqueryClient = bigquery.Client()
tableRef = bigqueryClient.dataset(datasetName).table(tableName)

【讨论】:

以上是关于BigQuery 数据集 ID 无效的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式列出已授予访问权限的 Bigquery 数据集,而无需事先知道项目 ID

使用 BigQuery 将多个数据集到同一个表 id 中。

BigQuery 中的 UNION ALL 或 CONCATENATE 数据集

BigQuery GA360 链接数据集不在项目中

BigQuery GA360链接数据集不在项目中

现有数据集的 BigQuery API 查询作业返回 404