如何从 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 属性生成指向您的viewTableReference 对象的作业。老实说,这是我唯一能想到的。 【参考方案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 中的视图中获取已保存的查询的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 UI 从 BigQuery 中的视图创建表?

使用 Apps 脚本定义/创建 BigQuery 保存视图的 SQL 查询

如何在 BigQuery 的新 SQL 查询中连接/使用已保存的查询

如何获取参数化 BigQuery 查询的控制台视图?

支持标准 SQL 中的视图

bigQuery 和 GA-Premium 集成:从 GA 中的未过滤视图导出数据时,如何在 bigQuery 中使用 IP 过滤器(以排除内部流量)