soda-js 分组 returns "Invalid SoQL query"

soda-js Group By returns "Invalid SoQL query"

我正在使用 soda-js 查询 USAC E-rate 数据库,我需要将分组依据添加到我的查询中。 Soda-js 有一个 group 方法作为 query 函数的一部分,但每当我包含它时,http 请求都会失败。

这是 returns 响应的代码:

consumer.query()
  .withDataset(dataset_id)
  .limit(50)
  .select('*')
  .where({ org_state: 'CO' })
  .getRows()
    .on('success', function(rows) { console.log(rows); })
    .on('error', function(error) { console.error(error); });

这是 .group 的代码 returns 一个 400 (Bad Request) 错误:

consumer.query()
  .withDataset(dataset_id)
  .limit(50)
  .select('*')
  .where({ org_state: 'CO' })
  .group('billed_entity_number') // <------ ADDED ROW
  .getRows()
    .on('success', function(rows) { console.log(rows); })
    .on('error', function(error) { console.error(error); });

如果我将 .group('billed_entity_number') 更改为 .group(null),则查询有效。

我似乎无法找到失败的原因,也考虑到组上的 SoQL docs

有帮助吗?

进一步查看文档后,我发现措辞不佳的句子:

$group must be used in conjunction with $select to provide the aggregation functions you wish to use.

我认为自己不擅长 SQL,但我上次检查时发现,使用 GROUP BY 不需要聚合函数。所以我想 SoQL 在这个意义上是独一无二的。



对于我的情况,我将 MAX() 放在我所有的 SELECT 字段周围,它按我想要的方式返回:

consumer.query()
  .withDataset(dataset_id)
  .limit(50)
  .select('billed_entity_number','MAX(org_state) as org_state','MAX(billed_entity_name) as billed_entity_name')
  .where({ org_state: 'CO' })
  .group('billed_entity_number')
  .getRows()
    .on('success', function(rows) { console.log(rows); })
    .on('error', function(error) { console.error(error); });