3

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

我遇到的问题是统计数据会定期更新并保留一些历史数据,因此每个用户都有大量记录。我只想获取每个用户的最新记录,但我一直无法找到一种方法来做到这一点。我最接近的是使用$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什么?

谢谢!

4

1 回答 1

4
  1. 您可以$top=1通过申请$orderby日期(desc)来获取最新记录。$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 示例服务的另一个示例,用于获取最近出生日期的员工详细信息。

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

于 2016-03-12T09:54:10.477 回答