Bigquery视图从python代码中获取错误

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

我们在一个数据集中的两个表上创建了一个视图。我们可以从控制台Web UI查询视图。但是当我们尝试使用服务帐户键从Python客户机代码查询视图时,我们得到了一个错误-错误代码:200,请求错误,表名无效。我们可以使用相同的代码查询基础表。当我们试图用视图名替换表名时,代码停止工作

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代码开始工作