shell BigQuery命令行使用特定的正则表达式查找所有数据集上的所有表

m528fe3b  于 2023-05-01  发布在  Shell
关注(0)|答案(2)|浏览(207)

是否有一种方法使用bq ls来查找每个具有特定REGEX(例如LIKE %backup%)的数据集的所有表?

soat7uwm

soat7uwm1#

您可以使用@Bihag的建议。但是,似乎需要额外的工作才能得到你想要的结果。
比如说

gcloud asset list \
  --format=json \
  --project=your-project \
  --asset-types=bigquery.googleapis.com/Table \
  | jq ".[].name" | grep "backup"

您可以考虑的另一种方法是使用INFORMATION_SCHEMA.TABLES视图。如果在BigQuery控制台中运行下面的查询,将使用LIKE操作获得过滤后的结果。

-- filter_table.sql
SELECT table_catalog AS project,
       table_schema AS dataset,
       table_name AS table
  FROM `{your-project}.region-{region}.INFORMATION_SCHEMA.TABLES`
 WHERE table_name LIKE '%backup%';

您也可以在CLI中使用bq query命令运行上述查询。

$bq query --use_legacy_sql=false < filter_table.sql
r8uurelv

r8uurelv2#

你可以使用google cloud asset API来获得想要的输出。
见下文,这基本上接受在项目层面,组织层面太。参见文档here
下面将给予所有数据集:

gcloud asset list --project='yourprojectid' --asset-types='bigquery.googleapis.com/Dataset'

下面的命令将给予给定项目下所有数据集下的所有表

gcloud asset list --project='yourprojectid' --asset-types='bigquery.googleapis.com/Table'

希望这对你有帮助。

相关问题