使用BigQuery Jupyter magic命令时将python环境中的变量添加到查询中

时间:2019-04-17 15:33:16

标签: google-bigquery jupyter

我的Jupyter笔记本中有几个单元格正在从Google的BigQuery查询数据。这些查询的一部分共享相同的变量。我正在寻找最清晰的方法来分解这些变量,因此不必每次都要进行更改时都单独手动设置它们。

这是我所拥有的一个例子:

%%bigquery df
select * from `project.dataset.table`
where date_str like '2019-02-%'

这是我要找的东西:

date_str_query = '2019-02-%' # this variable would be in the python environment

%%bigquery df
select * from `project.dataset.table`
where date_str like date_str_query

1 个答案:

答案 0 :(得分:1)

不幸的是,官方文档中缺少此部分,我不得不仔细阅读代码以最终找到解决方案。我在这里记录我的发现,希望对遇到同样问题的人们有所帮助。有两种方法可以做到这一点。

方法1 [根本不使用magic命令]:

date_str_query = '2019-02-%'
sql = """
select * from `project.dataset.table`
where date_str like {0}
""".format(date_str_query)
df = client.query(sql).to_dataframe()

方法2 [魔术命令规则!]:

params = {'date_str_query': '%-2019-02-%'}

%%bigquery df --params $params
select * from `project.dataset.table`
where date_str like @date_str_query

我更喜欢方法2 ,因为您可以使用magic命令突出显示SQL语法和其他功能。

参考文献:

Google文档:https://cloud.google.com/bigquery/docs/visualize-jupyter

源代码:https://github.com/googleapis/google-cloud-python/blob/master/bigquery/google/cloud/bigquery/magics.py

#####更新#####

新文档详细描述了magic命令的各种输入。可以在这里找到:https://googleapis.github.io/google-cloud-python/latest/bigquery/magics.html?highlight=gender