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); });
我正在使用 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); });