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
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