如何在 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笔记本历史记录

为啥在 Jupyter 笔记本中调用 cv2.imshow() 时出现无响应窗口

如何检查哪个 Jupyter 笔记本有“%run”另一个笔记本?

如何检查您是不是在 Jupyter 笔记本中

如何在 YAML 文件中配置 Jupyter 笔记本密码?

如何在从 docker 容器运行的 jupyter 笔记本中获取黑色代码格式?