2017-10-18 114 views
1

我正在使用node.js bigquery客戶端庫,並且需要從沒有分區塊的數據集中獲取表的列表。如何在沒有分區的情況下從bigquery獲取所有表ID?

例如,我有一些分區表:

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

我需要得到[表1,表2]結果,但使用的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的表,如果拆分並使其唯一似乎非常緩慢。

回答

1

你可以對__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); 
}); 
0

你可以使用一個元查詢:

select * from `wr_live.__TABLES_SUMMARY__` 
相關問題