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 id
的dataset 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】:您可以像这样使用dataset
和table
名称:
from google.cloud import bigquery
bigqueryClient = bigquery.Client()
tableRef = bigqueryClient.dataset(datasetName).table(tableName)
【讨论】:
以上是关于BigQuery 数据集 ID 无效的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式列出已授予访问权限的 Bigquery 数据集,而无需事先知道项目 ID