【问题标题】:How to get all table id's from bigquery without partitioning?如何在不分区的情况下从 bigquery 获取所有表 ID?
【发布时间】:2018-03-30 06:15:22
【问题描述】:

我正在使用 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 获取所有表,拆分并使其唯一似乎非常慢。

【问题讨论】:

    标签: node.js google-api google-bigquery google-cloud-platform


    【解决方案1】:

    您可以使用元查询:

    select * from  `wr_live.__TABLES_SUMMARY__`
    

    【讨论】:

      【解决方案2】:

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

      下面的示例获取数据集中的所有表,在_ 字符上拆分名称并获取第一部分。然后它会创建一个不同的列表。

      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);
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多