如何从 bigquery 中的视图中获取已保存的查询
Posted
技术标签:
【中文标题】如何从 bigquery 中的视图中获取已保存的查询【英文标题】:How to get saved query from view in bigquery 【发布时间】:2017-12-15 19:12:50 【问题描述】:使用 Python API,有没有办法从 Google Big Query 中检索当前保存的视图查询?我知道我可以获取视图元数据,但我需要能够保存实际查询。谢谢。
【问题讨论】:
一种方法是找到与创建视图相关联的job
对象并获取其query
属性。
好的,谢谢。如果我没有那个怎么办?很多视图是由其他人创建的,并且已经有 400 多个。
我建议自己找具体的工作。 Client.list_jobs
将为您提供所有可用的工作。遍历这些作业并找到其destination
属性生成指向您的view
的TableReference
对象的作业。老实说,这是我唯一能想到的。
【参考方案1】:
您无需获取创建视图的作业的详细信息。有一个更简单的方法。只需获取 Table
对象并检查其 view_query
属性即可。
代码
[..]
client = bigquery.Client('grey-sort-challenge')
dataset = client.dataset('apps_script_scheduler')
tables = list(client.list_dataset_tables(dataset))
for t in tables:
table = client.get_table(t)
print 'Table type: %s, SQL: %s' % (table.table_type, table.view_query)
[..]
输出(对于包含 2 个本机表和一个视图的我的数据集)
Table type: TABLE, SQL: None
Table type: TABLE, SQL: None
Table type: VIEW, SQL: SELECT
SUM(views) AS total_views,
title,
LANGUAGE
FROM
`bigquery-samples.wikipedia_benchmark.Wiki1M`
WHERE
title LIKE '%Melbourne%'
GROUP BY
title,
LANGUAGE
ORDER BY
total_views DESC;
文档 --> https://googlecloudplatform.github.io/google-cloud-python/latest/bigquery/reference.html#google.cloud.bigquery.table.Table.view_query
【讨论】:
非常感谢!这太棒了! 这回答了我来自this issue的第二个问题。谢谢!以上是关于如何从 bigquery 中的视图中获取已保存的查询的主要内容,如果未能解决你的问题,请参考以下文章
使用 Apps 脚本定义/创建 BigQuery 保存视图的 SQL 查询
如何在 BigQuery 的新 SQL 查询中连接/使用已保存的查询
bigQuery 和 GA-Premium 集成:从 GA 中的未过滤视图导出数据时,如何在 bigQuery 中使用 IP 过滤器(以排除内部流量)