使用应用程序脚本定义/创建 BigQuery 已保存视图的 SQL 查询



我想定义/使用应用程序脚本创建一个BigQuery Saved View的SQL语句,但无法弄清楚。

我已经尝试遵循本指南,但我似乎无法整理出来。什么是什么应用程序脚本函数来定义/更新定义/创建保存视图的SQL,在BigQuery中称其为project.dataset.vSAVEDVIEW

通过API创建视图使用与tables.insert

相同的方法

使用包含视图属性的表资源来调用表。

因此,您可以像本教程一样运行查询。然后将数据保存在新表中。

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

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

最新更新