Избегайте порога просмотра списка при ИЛИ Filter Rest Call - PullRequest
0 голосов
/ 26 апреля 2018

Доброе утро.

Моя проблема, как обычно, заключается в пороговом значении SharePoint Online.

У меня есть собственный список с большим количеством элементов (> 5.000), и мне нужно выполнять запросы к этому списку с помощью вызовов REST API.

Эта схема списка: Заголовок, Поле1 и Поле2.

Поле1 и Поле2 - это столбцы с коротким текстом INDEXED.

Ну ... мне нужно запросить этот список, отфильтровав по Field1 ИЛИ по Field2

https://asdasd.sharepoint.com/sites/xxxx/_api/web/lists/GetByTitle('Big01')/items?$filter=(Field1 экв 'Value1 53') или (поле2 экв 'Value2 25')

Несмотря на то, что и Field1, и Field2 являются индексированными полями, а результат этого запроса определенно меньше 5 000 элементов (2 элемента), я получаю пороговую ошибку.

{"odata.error": {"code": "- 2147024860, Microsoft.SharePoint.SPQueryThrottledException", "message": {"lang": "en-US", "value": "Попытка выполнения операции запрещено, поскольку оно превышает пороговое значение представления списка, установленное администратором. "}}}

Если я выполняю запрос к одному полю, как показано ниже, все работает нормально, но если я пытаюсь объединить два условия (ИЛИ), я получаю SPQueryThrottledException.

https: // asdasd.sharepoint.com/sites/ xxxx / _api / web / lists / GetByTitle ('Big01') / items? $ Filter = (Field1 eq 'Value1 53')

https: // asdasd.sharepoint.com/sites/xxxx/_api/web/lists/GetByTitle('Big01')/items?$filter=(Field2 eq 'Value2 25')

Есть идеи?

Спасибо

Sergio

1 Ответ

0 голосов
/ 30 апреля 2018

ИЛИ условие фильтра в API Rest будет зацикливать и фильтровать элементы 2 раза, поэтому общее количество фильтров будет превышать пороговое значение представления списка. Одним из решений является вызов одиночного фильтра с двумя разделенными вызовами Ajax и объединение данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...