应用脚本/制造商和大查询

Posted

技术标签:

【中文标题】应用脚本/制造商和大查询【英文标题】:App script/maker and Big Query 【发布时间】:2018-06-01 10:32:18 【问题描述】:

我有一个谷歌应用程序(应用程序制造商),我在其中编写以下代码:

    function runQuery() 
  var projectId = 'projekte-123425512';
  var request = 
    query: 'SELECT title FROM [bigquery-public-data:samples.wikipedia]  where title contains "olimpic" LIMIT 100'
  ;
  var queryResults = BigQuery.Jobs.query(request, projectId);
  var jobId = queryResults.jobReference.jobId;
  var names = queryResults.schema.fields.map(function(field) return field.name; );
  return queryResults.rows.map(function(row) 
    var obj = ;
    for( var i = 0, len = names.length; i < len; ++i ) 
      obj[names[i]] = row.f[i].v;
    
    return obj;
  );

所以我基本上尝试从 Big Query 中获取一些数据并将其存储在一个数组中。后来我希望它作为我的应用程序中的计算模型和数据源:

我已经尝试过了,并在我的记录器中得到了结果:

有效!但仅在应用程序脚本调试器中,我想测试整个应用程序我收到以下错误:

函数 queryRecords 必须返回一个记录数组,但该数组包含一个不是记录的元素。错误:函数 queryRecords 必须返回一个记录数组,但该数组包含一个不是记录的元素。

编辑

我更新了我的代码

    function runQuery() 
  var projectId = 'nifty-stage-155512';
  var request = 
    query: 'SELECT title FROM [bigquery-public-data:samples.wikipedia]  where title contains "olimpic" LIMIT 100'
  ;
  var queryResults = BigQuery.Jobs.query(request, projectId);
  var jobId = queryResults.jobReference.jobId;
  var names = queryResults.schema.fields.map(function(field) return field.name; );


  //var records = [];  
  return queryResults.rows.map(function(row) 
  var record = app.models.Test.newRecord();
  for (var i = 0, len = names.length; i < len; ++i) 
    // Calculated model should contain correspondent fields
    // all non-defined fields will be ignored
    record[names[i]] =  (row.f[i].v);
  

  return record;
);

它现在可以正常工作,但我的网格仍然没有数据:

我在网格或数据源的配置中缺少什么吗??

【问题讨论】:

似乎数据源需要一个数组作为大查询输出。但是我返回的对象应该是一个数组... 【参考方案1】:

应用制作工具不允许通过其数据源返回任意对象。所有结果都应该是强类型:

...

return queryResults.rows.map(function(row) 
  var record = app.models.CalcModelName.newRecord();

  for (var i = 0, len = names.length; i < len; ++i) 
    // Calculated model should contain correspondent fields
    // all non-defined fields will be ignored
    record[names[i]] = row.f[i].v;
  

  return record;
);

这里有一些示例供参考 https://developers.google.com/appmaker/samples/calculated-model/ https://developers.google.com/appmaker/samples/jdbc/

【讨论】:

它现在可以正常工作了 :) 谢谢,但我的网格中仍然没有显示任何数据,有什么我没有想到的吗?我在上面编辑了我的答案。 是的,谢谢,我发布了另一个问题,因为它是一个不同的主题

以上是关于应用脚本/制造商和大查询的主要内容,如果未能解决你的问题,请参考以下文章

云计算和大数据的方向以及发展前景如何

iPhone核心数据-简单查询

应用程序制造商:在网格中显示 Big Query 数据

电子制造行业的数字化转型突破点在哪?精益制造是关键

电子制造行业的数字化转型突破点在哪?精益制造是关键

蓝牙设备制造商的 OSX CoreAudio 查询返回 NULL - 我有啥办法可以参考此设备的 AudioComponentFindNext?