【发布时间】:2015-12-15 12:01:58
【问题描述】:
datalab github 存储库(位于 datalab/tutorials/BigQuery/ 下)的“SQL 参数”IPython 笔记本中的参数化示例显示了如何更改 WHERE 子句中正在测试的值。
%%sql --module get_data
SELECT *
FROM
[myproject:mydataset.mytable]
WHERE
$query
但是,这种语法似乎总是在参数周围插入引号。当我传递不仅仅是一个简单值的参数时,这会中断:
import gcp.bigquery as bq
query = "(bnf_code LIKE '1202%') OR (bnf_code LIKE '1203%')"
query = bq.Query(get_data, query=query)
print query.sql
这会打印一个无效的查询:
SELECT * FROM [myproject:mydataset.mytable]
WHERE "(bnf_code LIKE '1202%') OR (bnf_code LIKE '1203%')"
有什么方法可以插入没有用引号括起来的值?
我在我的代码中反复使用该模块,在查询参数中使用可变数量的 OR 子句。所以我确实需要一种方法来传递更复杂的查询。
【问题讨论】:
标签: sql google-bigquery google-cloud-datalab