使用 Java 客户端库在 BigQuery 中获取按标签过滤的表列表

Posted

技术标签:

【中文标题】使用 Java 客户端库在 BigQuery 中获取按标签过滤的表列表【英文标题】:Get a list of tables filtered by labels in BigQuery using Java client library 【发布时间】:2018-11-01 12:20:20 【问题描述】:

我正在使用 BigQuery 的 Java 客户端库。请问有没有办法在获取BigQuery表列表的时候指定标签,这样我得到的表就已经被我指定的标签过滤了?以下示例无法指定标签。

link

【问题讨论】:

【参考方案1】:

截至今天,如working with BigQuery lab 的文档中所述,此选项是不可能的:

目前,您无法根据过滤器列出表或视图 规范。

无论如何,BigQuery 团队已经意识到这对于某些用例来说是一个有趣的功能,因为在 a public Feature Request 中请求了此选项。随意加注星标以接收更新,并添加您自己的评论以解释您的用例并突出此选项的可用性。

作为替代方案(这可能不适合您),您仍然可以list all tables in a dataset 然后在客户端按标签过滤,尽管在这种情况下,客户端显然会检索所有表。


更新:

此外,我还找到了this other public Feature Request,其中宣布了 INFORMATION_SCHEMA 功能,还可以请求访问此功能的 Alpha 版本。

您的项目需要被列入白名单才能使用。但是,一旦您获得访问权限(或公众进入公共测试版/GA),您应该能够使用如下查询列出表:

CREATE TABLE
  [DATASET].[TABLE]
OPTIONS (labels = [('key1', 'value1'), ('key2', 'value2')])
AS SELECT 1 AS x, 'foo' AS y;

SELECT
  table_name
FROM
  [DATASET].INFORMATION_SCHEMA.TABLE_OPTIONS
WHERE
  option_name = 'labels'
  AND option_value LIKE '%key2%'

请注意,此功能仍在其Alpha release 中,因此将来可能会发生变化。

【讨论】:

以上是关于使用 Java 客户端库在 BigQuery 中获取按标签过滤的表列表的主要内容,如果未能解决你的问题,请参考以下文章

使用 Python,将 google.cloud.bigquery.job.query.QueryJob 输出保存到本地 JSON 文件

BigQuery - 使用 Java 客户端库上传 GZIP 压缩文件

使用 POST 请求和 Java 客户端库加载到 BigQuery 的任何示例?

如何在 BigQuery java 客户端加载作业中将“ignoreUnknownValues”选项设置为“true”

通过 Dataflow Java API 返回客户端的不一致 BigQuery 数据类型

BigQuery - 加载具有空值的 JSON 字段