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