Bigquery视图从python代码中获取错误
我们在一个数据集中的两个表上创建了一个视图。我们可以从控制台Web UI查询视图。但是当我们尝试使用服务帐户键从Python客户机代码查询视图时,我们得到了一个错误-错误代码:200,请求错误,表名无效。我们可以使用相同的代码查询基础表。当我们试图用视图名替换表名时,代码停止工作Bigquery视图从python代码中获取错误,python,view,google-bigquery,Python,View,Google Bigquery,我们在一个数据集中的两个表上创建了一个视图。我们可以从控制台Web UI查询视图。但是当我们尝试使用服务帐户键从Python客户机代码查询视图时,我们得到了一个错误-错误代码:200,请求错误,表名无效。我们可以使用相同的代码查询基础表。当我们试图用视图名替换表名时,代码停止工作 from google.cloud import bigquery def test(): client = bigquery.Client(project='project-name') quer
from google.cloud import bigquery
def test():
client = bigquery.Client(project='project-name')
query_results = client.run_sync_query("""
SELECT column-names
FROM `dataset.viewname`
WHERE conditions
;""")
query_results.use_legacy_sql = False
query_results.run()
page_token = None
while True:
rows, total_rows, page_token = query_results.fetch_data(
max_results=1,
page_token=page_token)
for row in rows:
print row
if not page_token:
break
if __name__ == '__main__':
test()
此外,当我们设置查询结果。使用\u legacy\u sql=False
时,我们得到以下错误:
BadRequest:400无法在SQL查询中引用旧SQL视图
当我们设置查询结果。使用\u legacy\u sql=True
时,我们会得到一个不同的错误:
BadRequest:400无效的表名:“dataset.viewname”
如果您使用的是旧版sql,请尝试用括号而不是反勾来转义dataset.viewname
因此,问题是:
query_results = client.run_sync_query("""
SELECT column-names
FROM [dataset.viewname]
WHERE conditions
;""")
标准SQL和传统SQL之间转义差异的文档:
不过,我们建议改用标准SQL。谢谢。。移动到标准SQL并在视图查询中使用#标准SQL标记有助于使用标准查询语言。python代码开始工作