将 bigquery 连接到一个意外的项目

connecting bigquery to an unintended project

我正在跟随 this instruction 编写 python 代码并将其连接到 bigquery

通过使用

gcloud init 

我选择一个特定的账户和项目

然后我 运行 这个代码:

from gcloud import bigquery
from gcloud.bigquery import job
from gcloud.bigquery.table import *

# Create a new Google BigQuery client using Google Cloud Platform project
# defaults.
bq = bigquery.Client()

但它似乎连接到一个错误的项目。怎么可能?有没有人有任何经验?这是错误。

Traceback (most recent call last): File "", line 1, in File "C:\Python36-32\lib\site-packages\gcloud\bigquery\dataset.py", line 423, in create method='POST', path=path, data=self._build_resource()) File "C:\Python36-32\lib\site-packages\gcloud\connection.py", line 347, in api_request error_info=method + ' ' + url) gcloud.exceptions.Forbidden: 403 Billing has not been enabled for this project. Enable billing at https://console.cloud.google.com/billing. (POST https://www.googleapis.com/bigquery/v2/projects/decisive-octane-142800/datasets)

我加粗的项目属于我的另一个帐户。

gcloud init 中选择的项目仅适用于 gcloud cli 工具,不适用于 python gcloud 库。事实上,这两者有点无关(他们有点同名)。

您提供的说明 link 不要求您使用 gcloud init

您可以使用 gcloud 来管理您的凭据,如 here 所述。

所以,而不是

bq = bigquery.Client()

您应该明确指定项目

bq = bigquery.Client(project=YOUR_PROJECT_ID)

也可以通过其他方式指定它,因为这是由此推导出来的code,但最好是明确的,因为这段代码做出的假设不能保证总是正确的。