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

BigQuery in Google Cloud Datalab - Get Query Text?

我们在 Google Cloud DataLab 中有一个工作原型,我们在其中广泛使用 %%bq 'magics' 来使用各种 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 但似乎无法找到我需要的内容。谁能帮忙?

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

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

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

上打开功能请求