Google Cloud Datalab 中的 BigQuery - 获取查询文本?

Posted

技术标签:

【中文标题】Google Cloud Datalab 中的 BigQuery - 获取查询文本?【英文标题】:BigQuery in Google Cloud Datalab - Get Query Text? 【发布时间】:2017-09-18 11:15:41 【问题描述】:

我们在 Google Cloud DataLab 中有一个工作原型,我们在其中广泛使用 %%bq“魔法”来使用各种 UDF 构建参数化查询。

比如:

customFn1 = bq.UDF("customFn1",theJsCode1,theDataTypeDef1,params=paramDefs1)
customFn2 = bq.UDF("customFn2",theJsCode2,theDataTypeDef2,params=paramDefs2)

然后:

%%bq query --name finalQry --udfs customFn1 customFn2
SELECT 
     customFn1(bell, whistle) AS Output1,
     customFn2(rank,serialNo) AS Output2
FROM
     myImaginaryTable
WHERE
    id < @param1 AND id > @param2

然后:

%%bq sample -q finalQry 
parameters:
   - name: param1
     type: STRING
     value: "ab1"
   - name: param2
     type: STRING
     value: "ab3"

我们希望开始着手部署此原型,并且需要访问最终查询文本以在我们的生产代码中使用(将在适当的时候通过 API 调用)。

我知道 GC datalab 正在后台做一些工作来编写这个查询(我们的现实世界的例子要复杂得多),我需要在我们的代码中复制它。

如果我可以访问 GC datalab 在组成 udf、替换参数等之后生成的实际查询字符串,那将非常有用?我可以手动完成复制和粘贴等,但如果我可以在某处自动访问这个最终查询字符串,那将是超级有用的吗?

我在这里阅读过文档:http://googledatalab.github.io/pydatalab/datalab.bigquery.html,但似乎找不到我需要的东西。任何人都可以帮忙吗?

【问题讨论】:

【参考方案1】:

你试过finalQry.sql吗?这将为您提供查询的 SQL 字符串。但是,这将在任何参数替换之前进行,因为这发生在执行时(在这种情况下是您的 sample 调用)。

见http://googledatalab.github.io/pydatalab/datalab.bigquery.html#datalab.bigquery.Query.sql

如果您认为替换后获取 SQL 字符串是一项有用的功能,您可以在 Github repo 上打开功能请求。

【讨论】:

这就是我所缺少的(不知道我是如何在文档中错过它的——我的错)。在参数替换后获取查询并不是很重要。在 udfs 等组成之后,我得到了 99%。谢谢 @yelsayed 是您链接到 Cloud Datalab 的活动/最新文档的文档吗?我问的原因是因为底部写着“Copyright 2015”——也是首页提到“datalab”命名空间将被逐步淘汰的事实,但“google.datalab”文档页面似乎没有包括“datalab”文档页面下的所有内容也与我有关。有人可以确认这确实是 Cloud Datalab 文档的最佳来源吗? @SheRey 是的,这些是最新的文档。版权年份不应超过首次发布日期,因此这是正确的。 google.datalab 命名空间是现在应该使用的,已弃用的 datalab 命名空间也可供参考。

以上是关于Google Cloud Datalab 中的 BigQuery - 获取查询文本?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 R 将 Google Cloud Datalab 输出保存到 BigQuery

如何使用R将Google Cloud Datalab输出保存到BigQuery中

如何在我的本地 linux 服务器上运行 google-cloud-datalab?

通过 Cloud Datalab 加入 Google BigQuery

Google Cloud datalab 查询 BIgQuery 表时出错

如何在 Google Cloud Datalab 中使用 Bigquery JSON 函数