使用ODATA获取每个用户的最新记录

使用ODATA获取每个用户的最新记录,odata,office365-restapi,Odata,Office365 Restapi,由于PowerShell方法从Office365获取邮箱统计信息,每个邮箱大约需要2秒,因此我正在努力从中获取数据,每2000个邮箱只需要几秒钟 我遇到的问题是,统计数据会定期更新,并且会保留一些历史数据,因此每个用户都有大量记录。我只想获得每个用户的最新记录,但我还没有找到一种方法来做到这一点。我最接近的方法是使用$filter=Date ge DateTime'2016-03-10T00:00:00',其中日期连接到几天前。理论上,如果我按日期描述排序,我应该首先得到最新的记录,如果有一个用

由于PowerShell方法从Office365获取邮箱统计信息,每个邮箱大约需要2秒,因此我正在努力从中获取数据,每2000个邮箱只需要几秒钟

我遇到的问题是,统计数据会定期更新,并且会保留一些历史数据,因此每个用户都有大量记录。我只想获得每个用户的最新记录,但我还没有找到一种方法来做到这一点。我最接近的方法是使用
$filter=Date ge DateTime'2016-03-10T00:00:00'
,其中日期连接到几天前。理论上,如果我按日期描述排序,我应该首先得到最新的记录,如果有一个用户有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   
因此,问题是:

  • 是否有办法指定条件,以便只返回每个用户的最新记录
  • 有没有一种方法可以让它按日期降序--我用
    $orderby
    有什么错
  • 谢谢

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

  • 您的查询看起来不错,下面是Odata示例服务中的另一个示例,用于获取员工最新出生日期的详细信息


  • 我没有尝试$top,因为我假设它与SQL中的大多数top参数一样工作,只返回一行,事实上这就是它的工作方式。我需要获取每个邮箱的最新记录,而不仅仅是最新记录。