Ошибка InefficientFilter в запросах Microsoft Graph, которые ранее работали

Выполнение следующего запроса к MS Graph для получения помеченных сообщений, упорядоченных по сроку:

https://graph.microsoft.com/beta/me/messages?$filter=flag/flagStatus%20eq%20%27flagged%27&$orderby=flag/dueDateTime/dateTime%20desc&$top=100

ранее преуспеет и вернет ожидаемые результаты. Недавно некоторые пользователи получили следующий ответ:

{
  "error": {
    "code": "InefficientFilter",
    "message": "The restriction or sort order is too complex for this operation.",
    "innerError": {
      "request-id": "5ef714c9-39a0-4167-a4d0-3682dcb46de4",
      "date": "2016-11-17T16:41:16"
    }
  }
}

В график внесена ошибка?

Странно, что раньше этот запрос был удовлетворительным, а теперь считается неэффективным. Это также происходит только в учетных записях некоторых пользователей.

Та же проблема возникла и со следующим запросом на получение вложений электронной почты, упорядоченных по дате получения:

https://graph.microsoft.com/v1.0/me/messages?$filter=hasAttachments%20eq%20true&$orderby=receivedDateTime%20desc&$expand=attachments($select=name,contentType,size,lastModifiedDateTime)&$top=6

который теперь получает тот же ответ об ошибке InefficientFilter. Обратите внимание, что второй запрос относится к API v1.0, поэтому он не ограничивается бета-версией.

Также обратите внимание, что удаление предложения orderby в затронутых учетных записях приведет к успешному выполнению запросов.


person eggm0n    schedule 17.11.2016    source источник
comment
Эта проблема возникает и у нас, и приводит к полному отключению всех наших пользователей. Кто-нибудь в Microsoft может взглянуть на это как можно скорее?   -  person David de-Vilder    schedule 21.11.2016
comment
Хе-хе-хе удачи нам, разработчикам, которые полагаются на стабильную функциональность Microsoft. Очевидно, $ orderby исчез из запросов. Все наши запросы, в которых использовался $ orderby, также не работают!   -  person msaad    schedule 29.11.2016


Ответы (1)


Это было намеренное (и критическое) изменение сделано для решения основной проблемы с фильтрацией. $orderby по-прежнему очень важен.

Подводя итог по этой ссылке, если вы используете в запросе как $orderby, так и $filter:

  1. Любые поля в $orderby ДОЛЖНЫ также быть в $filter.
  2. Order of fields in $filter matters:
    1. Fields that are also in $orderby MUST come first in the $filter and MUST be in the same order.
    2. Поля, которых нет в $orderby, ДОЛЖНЫ располагаться после полей в $orderby.

Итак, согласно этим рекомендациям, проблема с вашим запросом заключается в том, что flag/dueDateTime/dateTime отсутствует в $filter.

person Jason Johnston    schedule 07.12.2016
comment
Какого черта они это сделали? 2 года спустя, и это все еще проблема. Спасибо за понимание. - person Guy Biber; 16.09.2019
comment
Хороший блог с некоторыми решениями, например. что, ЕСЛИ вы хотите отсортировать по дате developer.microsoft.com/en-us/office/blogs/ - person Srinath Ganesh; 22.06.2021