OData v4 groupby与日期

时间:2016-08-11 09:18:49

标签: c# asp.net asp.net-web-api2 odata

我有一个OData查询命中WebAPI 2 OData控制器。我想使用DateTime字段对记录进行分组。我有以下查询:

$apply=groupby((day(DateTime),month(DateTime),year(DateTime)),aggregate(Id with countdistinct as Count))

以下回复出现此错误:

{
  "error":{
    "code":"",
    "message":"The query specified in the URI is not valid. Expression expected at position 22 in 'groupby((day(DateTime)),aggregate(Id with countdistinct as Count))'."
  }
}

DateTime字段是我用于生成数据库的Code-First模型中的C#DateTime。

我认为这是因为DateTime函数只能在过滤器中使用?

有没有办法使用WebAPI 2中支持的Data Aggregation Extensions在OData中实现我的目标?

1 个答案:

答案 0 :(得分:0)

我也为此付出了很多努力,发现以下语法可以按月和年对OData进行分组。如果需要,可以延长此时间。

.../_odata/v2.0/WorkItems?$apply=compute(year(CreatedDate) as y, month(CreatedDate) as m, day(CreatedDate) as d)/groupby((y,m,d),aggregate(Id with countdistinct as Count))

我认为您可能仍然有一个与众不同的问题。我认为聚合不支持它。我尝试时遇到此错误。

应用与聚合不同的计数的查询不是 受Google Analytics(分析)支持。

但是,删除聚合或进行求和类型聚合对我来说效果很好,并且由于您的问题是关于日期聚合的,希望这可以为您指明正确的方向。