使用Apps脚本定义/创建BigQuery保存的视图的SQL查询

时间:2019-07-31 03:29:49

标签: google-apps-script google-bigquery

我想使用Apps脚本定义/创建BigQuery保存的视图的SQL语句,但无法弄清楚。

我尝试过following this guide,但似乎无法对其进行梳理。 定义/更新用于定义/创建保存视图的SQL的Apps脚本功能是什么,在BigQuery中将其命名为project.dataset.vSAVEDVIEW

2 个答案:

答案 0 :(得分:0)

通过API创建视图的方式与tables.insert

  

使用包含视图属性的表资源调用tables.insert方法。

因此,您可以像this tutorial中那样运行查询。然后将数据保存在new table中。

答案 1 :(得分:0)

问题开始是因为在视图引用基于Google工作表的表时无法存储到新表中。无法确定身份验证问题,因此我决定保存一个视图,在提出这个问题时我无法完全解决这个问题。我确实弄清楚了最终如何做到这一点。我发现的一件事是,将表属性放在最后非常重要,因为当位于最前面时,它会创建一个表而不是视图。希望这对人们有所帮助...这是一个Apps脚本文件的结构,该结构会将视图查询写到已保存的视图而不是表中:

// Choose the function to run from menu above.  
// You will need to delete the view first if it is already created.


// 1) This function deletes the already created saved view to make room for it to be created again.  function save_payments.vPayments_appscript() will fail if view already exists.

function remove_payments.vPayments_appscript() {
  var projectId = 'projectexample';
  var datasetId = 'payments';
  var tableId = 'vPayments_appsscript';
  table = BigQuery.Tables.remove(projectId,datasetId,tableId);
  }

// 2) This function creates the saved view in BQ

function save_payments.vPayments_appscript() {
  var projectId = 'projectexample';
  var datasetId = 'payments';
  var tableId = 'vPayments_appsscript';
  var table = {
    view: {
        query: 
        'SELECT * FROM `projectexample.payments.tPayments1` ' +
        'UNION ALL ' +
        'SELECT * FROM `projectexample.payments.tPayments2` ',
        useLegacySql: false
    },
    tableReference: {
      projectId: projectId,
      datasetId: datasetId,
      tableId: tableId,
    },
  };

  var queryResults = BigQuery.Tables.insert(table, projectId, datasetId);
  Logger.log(queryResults.status);
}
`