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 子句。所以我确实需要一种方法来传递更复杂的查询。