Cosmos db REST API упорядочить по разделам - PullRequest
0 голосов
/ 08 мая 2018

Я использую REST API с SQL для Cosmos db, и мне нужно возвращать результаты запроса, упорядоченные по временной метке (которая хранится как цифровая метка времени UNIX). Я пытаюсь сделать это простым ORDER BY.

e.g. SELECT * FROM requests c ORDER BY c.timestamp

Однако с разбиением я получаю ошибку:

"Кросс-секционный запрос с TOP / ORDER BY или агрегатными функциями не является поддерживается. "

В настройках коллекции точность индексации для строк установлена ​​на -1, что было предложено откуда-то еще, однако ошибка все еще выдается.

Если я удаляю или устанавливаю в ложь заголовок x-ms-documentdb-query-enablecrosspartition, тогда я получаю:

"Требуется перекрестный раздел, но он отключен. Установите x-ms-documentdb-query-enablecrosspartition в true, укажите x-ms-documentdb-partitionkey, или пересмотрите ваш запрос, чтобы избежать этого исключение. "

Кто-нибудь добился успеха в этом через API REST SQL?

Спасибо.

1 Ответ

0 голосов
/ 09 мая 2018

Я воспроизвожу вашу проблему на моей стороне.

enter image description here

Однако, на основании этого официального заявления , java sdk и node.js sdk поддерживают запросы TOP и ORDER BY для многораздельных коллекций. Я проверяю тот же запрос через SDK, и он работает.

enter image description here


Обновление ответа:

Я использовал инструмент Flidder для наблюдения за запросами из SDK и обнаружил три включенных запроса.

One:

Когда я запускаю приведенный выше код sdk, первый запрос, как показано ниже, и точно такая же ошибка, что и остальные. Тем не менее, sdk сделает попытку для получения свойства раздела _rid.

enter image description here

Два:

enter image description here

Я не нашел четкого официального объяснения по этому поводу. Однако, прочитав эту статью , я полагаю, что перекрестное разделение здесь относится к физическим разделам, а не к логическим разделам. Таким образом, запрос поможет нам «избавиться» от физического раздела, в котором хранятся ваши данные, и PartitionKeyRanges.

Три:

enter image description here

Затем SDK отправляет мне запрос на обновление с дополнительным свойством: x-ms-documentdb-partitionkeyrangeid. И результаты запроса вернулись правильно. Обратите внимание на обновление sql в последнем запросе.

Я думаю, вы могли бы подражать запросам, которые SDK сделал для нас, чтобы удовлетворить ваши потребности.

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