使用 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 中获取按标签过滤的表列表的主要内容,如果未能解决你的问题,请参考以下文章