如何从bigquery没有分区获取所有表ID?

我正在使用node.js bigquery客户端库,并需要从数据集中获取表的列表,而不需要分区块。

例如,我有一些分区表:

  • table1_20170101
  • table1_20170102
  • table1_20170131
  • table2_20170101
  • table2_20170102
  • table2_20170131

我需要得到[table1,table2]作为结果,但使用getTables方法我得到[table1_20170101,table1_20170102 …]

下面的脚本示例:

dataset.getTables(function (err, tables) { let result = []; for (let key in tables) { result.push(tables[key].id); } console.log(result); res.send(result); }); 

有没有可用的方法来获得“未分区”的表名?

如果有大量分区表,使用_date获取所有表,拆分并使其唯一似乎是非常缓慢的。

您可以对__TABLES_SUMMARY__表执行查询,而不是使用getTables方法。

下面的示例获取数据集中的所有表,将_字符上的名称拆分并取第一个部分。 然后创build一个清晰的列表。

 bigquery.query({ query: [ 'SELECT DISTINCT SPLIT(table_id,"_")[ORDINAL(1)] as tableName', 'FROM `DATASETNAME.__TABLES_SUMMARY__`;' ].join(' '), params: [] }, function(err, rows) { let result = []; for (row of rows) { result.push(row.tableName); } console.log(result); }); 

你可以使用元查询:

 select * from `wr_live.__TABLES_SUMMARY__`