【问题标题】:Error when trying to query BQ with Apps Script尝试使用 Apps 脚本查询 BQ 时出错
【发布时间】:2018-06-28 14:42:23
【问题描述】:

我正在尝试获取 Apps 脚本以进行 BQ 查询,但是我收到以下错误:

在第 1 行第 41 列遇到“FROM”“FROM”。期待:“)” ...(第 14 行,文件“代码”)

查询在 BQ 中运行良好,所以我不明白这里出了什么问题...

这是脚本:

  var datasets = [
    ['012345', "Country"]
    // other datasets will complete the list
  ]

  datasets.forEach(function(value) {
    var datasetId = value[0];
    var countryName = value[1];

    var queryDataset = BigQuery.Jobs.query(
      {'query' : 'SELECT "' + countryName + '" as country,' +
       'EXTRACT(HOUR FROM TIMESTAMP_SECONDS(visitStartTime) AT TIME ZONE "Europe/Paris") AS Hour,' +
       '(SELECT MAX(sourcePropertyInfo.sourcePropertyDisplayName)' +
       'FROM UNNEST(session.hits) AS hits) AS service,' +
       'IFNULL(SUM(totals.visits),0) as sessions,' +
       'IFNULL(SUM(totals.transactions),0) as transactions,' +
       'IFNULL(ROUND((SUM(totals.transactions)/SUM(totals.visits))*100,2),0) AS conversionRate' +
       'FROM `xx-135923.' + datasetId + '.ga_realtime_view` AS session' +
       'GROUP BY' +
       'Hour,' +
       'service' +
       'ORDER BY' +
       'Hour;',
       'defaultDataset' : {
       'datasetId': datasetId,
       'useLegacySql' : false
      }
      }, 'xx-135923');

你们有什么想法吗?

感谢您的帮助

【问题讨论】:

  • 那么,您是否调试了构建的 Apps 脚本查询?如果您在语法极其重要的复杂变量构造中遇到错误,例如嵌套 SQL 调用,最好先构造一个复杂查询并使用try + catch 打印所使用的查询及其生成的错误。请参阅此答案中的代码以了解我的意思:stackoverflow.com/a/51085317/9337071
  • 感谢您的帮助。我创建了一个变量来记录构造的查询,然后在 BQ 查询中使用它。当我在字符串中使用双引号时,我还通过添加空格和转义序列来稍微清理查询。当我在其上使用 Logger.log 时查询是准确的,但是我仍然得到同样的错误。
  • 删除“EXTRACT(HOUR FROM TIMESTAMP_SECONDS(visitStartTime) AT TIME ZONE "Europe/Paris") AS Hour”部分显然修复了它,尽管我不知道为什么。现在我收到一个新错误“无效的表名:xx-135923:012345.ga_realtime_view”,我也不明白,因为该表是准确的。
  • 好的,我找到了。这是一个愚蠢的错误:我将“'useLegacySql':false”部分放在“defaultDataset”对象中。所以我实际上是在 Legacy SQL 而不是 Standard 中查询。
  • @kinzie 您能否写下您的评论作为答案。谢谢!

标签: google-apps-script google-bigquery


【解决方案1】:

问题已解决:这是一个愚蠢的错误。我将“'useLegacySql':false”部分放在“defaultDataset”对象中。所以我实际上是在 Legacy SQL 而不是 Standard 中查询

【讨论】:

  • 我没有改变我的任何东西,它似乎使用旧版 SQL 来处理 bq 命令行脚本。因此,我必须将表名放在方括号中而不是反引号中。感谢您发布此内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-27
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多