通过 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的主要内容,如果未能解决你的问题,请参考以下文章