使用BigQuery / Python3 / Reddit“项目名称需要用点号分隔”错误

时间:2018-08-22 17:48:14

标签: python-3.x google-bigquery reddit

我用python3编写了这段代码。

from google.cloud import bigquery
import json

timeframe = '2006'

client = bigquery.Client()

query_job = client.query("SELECT * FROM `fh-bigquery:reddit_comments.{}` LIMIT 05".format(timeframe))

results = query_job.result()

设置完https://cloud.google.com/bigquery/create-simple-app-api中的环境变量后

set GOOGLE_APPLICATION_CREDENTIALS=[PATH]

我收到以下错误:

google.api_core.exceptions.BadRequest: 400 GET https://www.googleapis.com/bigquery/v2/projects
/ravischat-214114/queries/f936b73e-cf46-4fc5-b161-b05474c41560?maxResults=0: 
Project name needs to be separated by dot from dataset name, 
not by colon in table name "fh-bigquery:reddit_comments.2006".

任何解决错误的帮助将不胜感激!

如果我需要直接在代码中设置身份验证JSON文件的路径,如果有人可以告诉我该怎么做,我将不胜感激。

2 个答案:

答案 0 :(得分:4)

根据显示的错误,更改:

`fh-bigquery:reddit_comments.2006`

收件人:

`fh-bigquery.reddit_comments.2006`

答案 1 :(得分:0)

BigQuery SQL:标准方言与传统方言

BigQuery 使用两种 SQL 方言,Legacy SQL 和 Standard SQL。默认情况下,方言设置为标准 SQL。可以使用以下行进行更改

将 use_legacy_sql 设置为 True 以使用旧版 SQL 语法。

job_config = bigquery.QueryJobConfig(use_legacy_sql=True)

在这种情况下,fh-bigquery:reddit_comments.2006 是有效且有效的。

如果您使用的是标准 SQL 方言,则需要将其更改为fh-bigquery.reddit_comments.2006(将冒号替换为点)。