ODataV4是否支持日期值的聚合?
我正在寻找一种OData查询语法,它有助于解决我们在SqlServer中所做的Sum((DateDiff,minute,StartDate,EndDate)。使用OData v4是否可以做这样的事情ODataV4是否支持日期值的聚合?,odata,odata-v4,Odata,Odata V4,我正在寻找一种OData查询语法,它有助于解决我们在SqlServer中所做的Sum((DateDiff,minute,StartDate,EndDate)。使用OData v4是否可以做这样的事情 我尝试了聚合函数,但无法在duration类型上使用sum运算符。有什么想法吗?您不能在符合标准的v4服务中直接执行这样的查询,因为内置聚合都在单个字段上运行,例如,不支持创建新的任意列以将结果投影到其中,我s主要是因为新列未定义。通过将规范限制为仅在资源本身中预定义的列,我们可以对将返回的数据的结
我尝试了聚合函数,但无法在duration类型上使用sum运算符。有什么想法吗?您不能在符合标准的v4服务中直接执行这样的查询,因为内置聚合都在单个字段上运行,例如,不支持创建新的任意列以将结果投影到其中,我s主要是因为新列未定义。通过将规范限制为仅在资源本身中预定义的列,我们可以对将返回的数据的结构有很强的确定性 如果您是API的作者,那么有三种常见的方法可以实现与您的请求类似的查询
- 只有当您确实需要在多个资源上重用相同的聚合时,才研究此解决方案
- 将函数想象成类似于SQL视图的函数,它实际上只是表示与资源关联的自定义查询和自定义响应对象的一种方式
- 通常使用函数来应用复杂的筛选条件,这些条件仍然返回它们绑定到的资源,但如果需要,可以返回完全不同的数据结构
- 在您的例子中,您可以将
投影到它自己的离散列中,可能称为DateDiff(minute,StartDate,EndDate)
或Minutes
。然后您可以Duration
在这个新字段中应用一个简单的$apply
和
虽然OData聚合很方便,但实现自定义函数为您做到这一点的速度要快9/10。这是您的API吗?您是否对使用自定义函数的解决方案持开放态度?如果是这样,请使用更多信息更新您的帖子,如您尝试复制的完整SQL查询和一些示例结果。还有很多其他信息r增加了使用可演示功能的好处。