如何从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__`