Datalab SQL 个模块中的参数

Parameters in Datalab SQL modules

datalab github repo(在 datalab/tutorials/BigQuery/ 下)"SQL Parameters" IPython notebook 中的参数化示例展示了如何更改正在测试的值WHERE 子句。是否可以使用参数来更改正在 SELECT 上的字段的名称?

例如: SELECT COUNT(DISTINCT $a) 作为 n 来自 [...]

在我收到下面的答案后,这是我所做的(显然有一个虚拟 table 名称和字段名称):

%%sql --module test01 DEFINE QUERY get_counts SELECT $a AS a, COUNT(*) AS n FROM [project_id.dataset_id.table_id] GROUP BY a ORDER BY n DESC

table = bq.Table('project_id.dataset_id.table_id') field = table.schema['field_name'] bq.Query(test01.get_counts,a=field).sql bq.Query(test01.get_counts,a=field).results()

您可以使用架构对象中的字段(例如,给定 table,通过 table.schema[fieldname] 获取特定字段)。

或者使用 _repr_sql_ 方法实现自定义对象。参见:https://github.com/GoogleCloudPlatform/datalab/blob/master/sources/lib/api/gcp/bigquery/_schema.py#L49