使用ODATA

时间:2016-03-11 21:28:12

标签: odata office365-restapi

由于从Office365获取邮箱统计信息的PowerShell方法每个邮箱大约需要2秒钟,我正在努力从Office 365 Reporting web service获取数据,每个邮箱只需几秒钟。

我遇到的问题是定期更新统计数据并保留一些历史数据,因此每个用户都有大量记录。我只想获得每个用户的最新记录,但我还没有找到办法做到这一点。我最接近的是使用$filter=Date ge DateTime'2016-03-10T00:00:00',其中日期连接到几天前。理论上,如果我按Date desc排序,我应该先获得最新记录,如果有一个用户有3/10和3/11的记录,那么3/11记录将首先被拉出,这将是为我工作。但无论我怎么做,它似乎首先回到旧的记录。

理想情况下,我希望能够设置标准,以便它只返回每个邮箱的最新记录,但我似乎无法弄清楚或找到如何做到这一点。我最接近的就是开始运行在特定日期过滤的查询,每天查询一天的日期。

如果我能够获得最先返回的最新记录,我可以使用它,因为如果我已经收到一条记录,我可以丢弃一条记录。

https://reports.office365.com/ecp/reportingwebservice/reporting.svc/MailboxUsageDetail/
?DelegatedOrg=nnn.onmicrosoft.com&$select=Date,WindowsLiveID,CurrentMailboxSize
&$filter=Date ge DateTime'2016-03-08T00:00:00'&$orderby=Date desc   

所以问题是:

  1. 有没有办法指定条件,以便只返回每个用户的最新记录?
  2. 有没有办法让它按日期降序排序 - 我对$orderby做错了什么?
  3. 谢谢!

1 个答案:

答案 0 :(得分:0)

  1. 您可以使用$top=1在日期(desc)上应用$orderby来获取最新记录。在这种情况下,$filter$skip可能不需要。 https://reports.office365.com/ecp/reportingwebservice/reporting.svc/MailboxUsageDetail/?DelegatedOrg=nnn.onmicrosoft.com&$select=Date,WindowsLiveID,CurrentMailboxSize&$orderby=Date desc&$top=1

  2. 您的查询看起来很好,这是Odata示例服务的另一个示例,用于获取最近出生日期的员工详细信息。

  3. http://services.odata.org/V4/Northwind/Northwind.svc/Employees?$select=EmployeeID,FirstName,LastName,BirthDate&$orderby=BirthDate%20desc&$top=1