如何在 Jupyter 笔记本中调用 BigQuery 函数
Posted
技术标签:
【中文标题】如何在 Jupyter 笔记本中调用 BigQuery 函数【英文标题】:How to call a BigQuery Function in Jupyter notebook 【发布时间】:2019-12-26 18:45:19 【问题描述】:我使用 Jupyterhub 运行 BigQuery SQL,我的查询的常用语法是:
import google.datalab.bigquery as bq
sql_qry = "select * from table"
query = bq.Query(sql_qry)
sql_job = query.execute(output_options = bq.QueryOutput.table(name='output_table',
mode='overwrite'))
但我正在尝试在 Jupyterhub 上使用 BigQuery 函数:
CREATE TEMP FUNCTION first_letter(x STRING) AS (
SUBSTR(x, 1, 1)
);
知道如何解析这个吗?我当然可以将它作为字符串添加到每个查询中,但由于语法的原因,我不能简单地顺序运行该查询与同一字符串中的其他查询。
【问题讨论】:
您能否提供您尝试运行的查询的示例?我不明白您问题的这一部分:“由于语法的原因,我不能简单地顺序运行该查询与同一字符串中的其他查询” 通过删除temp
使其成为一个持久函数。然后将其用法合并到您的sel_qry
中。 select *, project.dataset.fn_first_letter(field) from table
。 medium.com/@hoffa/new-in-bigquery-persistent-udfs-c9ea4100fd83
是的,正是我想要的。我不知道您可以创建持久函数并将它们保存在数据库中。谢谢!
【参考方案1】:
您可以将函数保存在 sql 文件中,然后在 JupyterHub 中读取该文件,将其保存在变量中并将其发送到 BigQuery API,如下所示:
sql_file = file('function.sql', 'r')
sql = sql_file.read()
sql_file.close()
query_data =
'query': sql
另外,如果你使用的是 Jupyter,可以使用BigQuery Magic Functions
【讨论】:
以上是关于如何在 Jupyter 笔记本中调用 BigQuery 函数的主要内容,如果未能解决你的问题,请参考以下文章
为啥在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口