首页 > 解决方案 > 谷歌datalab查询创建表失败

问题描述

我正在尝试在 BigQuery 中查询大量数据,然后使用 PyCharm 中的“datalab”作为 IDE 上传所需数据集(datasetxxx)中的表。下面是我的代码:

query = bq.Query(sql=myQuery)
job = query.execute_async(
        output_options=bq.QueryOutput.table('datasetxxx._tmp_table', mode='overwrite', allow_large_results=True))
job.result()

但是,我最终得到“找不到项目 ID”。项目 ID 通过 .jason 文件作为 os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = 文件的路径导入。我还尝试如下显式声明上面的项目 ID。

self.project_id = 'xxxxx'
query = bq.Query(sql=myQuery, context = self.project_id)

这次我遇到了以下错误:

TypeError: init () 得到了一个意外的关键字参数 'context'。

它也是一个最新版本。谢谢你的帮助。

回复:项目 ID 在“FROM”子句中指定,我还可以使用“echo”命令查看 .json 文件的路径。下面是堆栈跟踪:

Traceback (most recent call last):
  File "xxx/Queries.py", line 265, in <module>
brwdata._extract_gbq()
  File "xxx/Queries.py", line 206, in _extract_gbq
, allow_large_results=True))

File "xxx/.local/lib/python3.5/site packages/google/datalab/bigquery/_query.py", line 260, in execute_async
table_name = _utils.parse_table_name(table_name, api.project_id)

File "xxx/.local/lib/python3.5/site-packages/google/datalab/bigquery/_api.py", line 47, in project_id
return self._context.project_id

File "xxx/.local/lib/python3.5/site-packages/google/datalab/_context.py", line 62, in project_id
raise Exception('No project ID found. Perhaps you should set one by running'

Exception: No project ID found. Perhaps you should set one by running"%datalab project set -p <project-id>" in a code cell.

标签: python-3.xgoogle-bigquerygoogle-cloud-datalab

解决方案


如果有人需要,这是更新的方式:

现在您可以将Context最新版本用作:

from google.datalab import bigquery as bq
from google.datalab import Context as ctx

ctx.project_id = 'PROJECT_ID'
df = bq.Query(query).execute()
...

推荐阅读