通过 pydatalab 将任何选项/参数传递给 BigQuery

Posted

技术标签:

【中文标题】通过 pydatalab 将任何选项/参数传递给 BigQuery【英文标题】:Pass any Options / Params to BigQuery via pydatalab 【发布时间】:2018-02-23 13:57:39 【问题描述】:

我想通过 Query Object Instance 将更多选项传递给我正在使用 pydatalab 执行的 bigquery 作业,而不仅仅是 QueryParameters(这已经是可能的了)。

您可以在 API 文档中找到可用选项:https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs

也许你们中的某个人更喜欢这个话题,可以告诉我如何传递defaultDataset

【问题讨论】:

恐怕它没有在库中实现,也没有简单的解决方法。您是否考虑过在issue tracker 中提交功能请求? 【参考方案1】:

如果您使用的是 pydatalab,那么您应该查看名为 google.datalab.bigquery 的 Python 模块。除其他外,此模块允许您使用不同的参数(例如:sql 查询、上下文、来源等)initializes an instance of a Query object。

您还有一个DatasetName 的课程。

不确定为什么需要设置默认数据集。你可以做的是:

my_obj = bq.DatasetName('myProjectId', 'myDatasetId')

然后就可以得到datasetId:my_obj.dataset_id

例如:

import google.datalab.bigquery as bq
my_obj = bq.DatasetName('projectid', 'datasetid')
query = bq.Query("SELECT * FROM " + "`" + my_obj.dataset_id + ".table`" + " LIMIT 1000")

output_options = bq.QueryOutput.table(use_cache=False)
result = query.execute(output_options=output_options).result()
result

【讨论】:

是的,我已经在使用它了。我无法传递其他选项,尤其是 defaultDatasetId 了解尼科。您没有与使用 API 相同的选项。我将编辑我的答案以提供更多详细信息。 我知道我默认情况下没有相同的选项。但也许有人知道如何在不手动请求 API 或轻松修补该方法的情况下做到这一点 感谢编辑。我确实想手动格式化查询。我想使用一些绕过选项,例如 defaultDatasetId (这是一个示例,而不是问题,传递 defaultDataset 的一个用例是为生产/登台系统编写查询并在正确的系统上自动执行它们,但保留它们的副本-可粘贴到网络用户界面)。

以上是关于通过 pydatalab 将任何选项/参数传递给 BigQuery的主要内容,如果未能解决你的问题,请参考以下文章

如何将查询url参数传递给twig模板

如何通过 nginx 将路径参数传递给 lua 代码?

将命令行参数传递给颤振应用程序

如何将位置参数传递给交互式 bash 会话

如何将可选参数传递给 C++ 中的方法?

使用 -n 或 -p 选项时是不是可以将命令行参数传递给 @ARGV?