如何通过 Datalab 查询 BigQuery 视图?
How to query BigQuery view through Datalab?
我的 BigQuery 中保存了一个 SQL 视图。我想 运行 SQL 查询此视图。我们可以 运行 SQL 查询表如下:
%%bq query
SELECT *
FROM tablename
WHERE condition
但是我在 运行为视图设置相同时出现错误:
%%bq query
SELECT * FROM viewname
错误:
invalidQuery: Cannot reference a legacy SQL view in a standard SQL query.
或
import google.datalab.bigquery as bq
c = bq.View.query(sql='SELECT * From viewname').execute().result().to_dataframe()
错误:
NameErrorTraceback (most recent call last)
in ()
1 import google.datalab.bigquery as bq
----> 2 c = View.query(sql='SELECT * From viewname').execute().result().to_dataframe()
TypeError: 'property' object is not callable
正如您已经确定的,有两种在 Datalab 中使用 BigQuery 的方法:
- 使用 %%bq,如 this sample notebook.
中所示
- 使用 Datalab 的 BigQuery API 库 (sample notebook)。目前,支持和更新的版本是
google.datalab.bigquery
,但是出于向后兼容的原因,旧版本 datalab.bigquery
仍然可用。
根据您收到的错误消息 (Cannot reference a legacy SQL view in a standard SQL query
),我了解到您查询的视图是使用旧版 SQL 查询创建的。正如本 post、Datalab is moving to Standard SQL 中所解释的,因此它对 Legacy SQL 的支持正在停止。这就是为什么 %%bq
和 google.datalab.bigquery
都不支持 Legacy SQL,只支持 Standard SQL.
如果您确实需要现在的视图(即使用 Legacy SQL 创建),作为临时解决方法,您可以改用旧库(仍然可用),datalab.bigquery
如下:
import datalab.bigquery as bq
bq.Query("SELECT * FROM dataset.legacy_sql_view;").results()
不过,我强烈建议您入手migrating to Standard SQL,因为它是 BigQuery 的首选查询语言,而且它有很多优点,其中可以算上 Datalab 中的官方支持。
我的 BigQuery 中保存了一个 SQL 视图。我想 运行 SQL 查询此视图。我们可以 运行 SQL 查询表如下:
%%bq query
SELECT *
FROM tablename
WHERE condition
但是我在 运行为视图设置相同时出现错误:
%%bq query
SELECT * FROM viewname
错误:
invalidQuery: Cannot reference a legacy SQL view in a standard SQL query.
或
import google.datalab.bigquery as bq
c = bq.View.query(sql='SELECT * From viewname').execute().result().to_dataframe()
错误:
NameErrorTraceback (most recent call last) in () 1 import google.datalab.bigquery as bq ----> 2 c = View.query(sql='SELECT * From viewname').execute().result().to_dataframe()
TypeError: 'property' object is not callable
正如您已经确定的,有两种在 Datalab 中使用 BigQuery 的方法:
- 使用 %%bq,如 this sample notebook. 中所示
- 使用 Datalab 的 BigQuery API 库 (sample notebook)。目前,支持和更新的版本是
google.datalab.bigquery
,但是出于向后兼容的原因,旧版本datalab.bigquery
仍然可用。
根据您收到的错误消息 (Cannot reference a legacy SQL view in a standard SQL query
),我了解到您查询的视图是使用旧版 SQL 查询创建的。正如本 post、Datalab is moving to Standard SQL 中所解释的,因此它对 Legacy SQL 的支持正在停止。这就是为什么 %%bq
和 google.datalab.bigquery
都不支持 Legacy SQL,只支持 Standard SQL.
如果您确实需要现在的视图(即使用 Legacy SQL 创建),作为临时解决方法,您可以改用旧库(仍然可用),datalab.bigquery
如下:
import datalab.bigquery as bq
bq.Query("SELECT * FROM dataset.legacy_sql_view;").results()
不过,我强烈建议您入手migrating to Standard SQL,因为它是 BigQuery 的首选查询语言,而且它有很多优点,其中可以算上 Datalab 中的官方支持。