python-3.x - 谷歌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.
解决方案
如果有人需要,这是更新的方式:
现在您可以将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()
...
推荐阅读
- javascript - 匹配/索引返回整个字符串
- javascript-objects - 如何为特定事件提取二乘二表
- sql - 数字 3,但某些应用程序显示符号 =
- anaconda - 使用 python 或 hadoop 进行数据分析?
- angular - 一个具有多个组件的路由
- git - 通过拉取他们的分支来贡献给其他人的拉取请求
- .net - 运行单元测试时出现 IOException
- python - 来自 docker 项目中 mysql 配置的不同主机值的不同错误
- docusignapi - DocuSignapi - OAuth API 调用被计为 API 请求,其数量有限制
- javascript - Angular 2中的每个按键都没有调用自定义验证器