Search code examples
sqlgoogle-bigquerygoogle-cloud-datalab

Remove quote marks in Google Cloud Datalab SQL module parameters?


The parameterization example in the "SQL Parameters" IPython notebook in the datalab github repo (under datalab/tutorials/BigQuery/) shows how to change the value being tested for in a WHERE clause.

%%sql --module get_data
SELECT *
FROM
    [myproject:mydataset.mytable]
WHERE
    $query

However, this syntax always seems to insert quotation marks around the parameter. This breaks when I pass parameters that aren't just a simple value:

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

This prints an invalid query:

SELECT * FROM [myproject:mydataset.mytable]
WHERE "(bnf_code LIKE '1202%') OR (bnf_code LIKE '1203%')"

Is there any way I can insert values that aren't wrapped in quotation marks?

I'm using the module repeatedly in my code, with variable numbers of OR clauses in the query parameter. So I do need a way to pass in more complicated queries.


Solution

  • Sorry, variables are meant to be simple scalars, or tables, or (soon) lists for use in IN clauses. They are not meant for expressions.