Функция partitions позволяет получить информацию о количестве объектов, возвращаемых запросом с разбиением на группы определенного размера, по каждой группе получить минимальный и максимальный идентификатор объектов и количество объектов в группе.
Допустимое расширение: .xml.
Функция имеет параметр query, значением которого должен быть.xml-документ, содержащий информацию о запросе к данным, который должен быть выполнен, и о размере групп, на которые должен быть разделен результат. Структура xml-документа должна повторять структуру, используемую при вызове функции cursor (см. Функция cursor) со следующими отличиями:
- Элемент query, в дополнение к обязательному атрибуту class, должен иметь еще один обязательный атрибут chunksize - размер группы (целое число - количество записей в группе).
- Узлы item со значениями атрибута part, равными what, можно не добавлять, в запросе всегда будет использоваться только идентификатор объекта (свойство ID).
- Узлы item со значениями атрибута part, равными order, group, having использоваться не должны. При выполнении запроса группировка применяться не будет, а сортировка всегда будет выполняться по идентификаторам объектов (свойство ID) по убыванию.
- Результат, возвращаемый функцией, всегда будет возвращен полностью, независимого от переданного значения атрибута fetchall.
В качестве результата функция вернет XML-документ с элементом data с атрибутом eof="1", имеющий дочерние узлы row, соответствующие каждой полученной группе. Каждый узел row будет иметь следующий набор дочерних узлов:
- min - минимальный ID в группе объектов;
- max - максимальный ID в группе объектов;
- count - количество объектов в группе; во всех узлах row, кроме последнего значение count будет равно значению атрибута chunksize, переданному в запросе.
Узлы
row будут отсортированы по убыванию значений
ID объектов.
Пример | Пример запроса: 1 https://techmill.ru/demo/partitions.xml?query=
2 <query class="TPerson" chunksize="1000">
3 <item part="0" name="ID"/>
4 <item part="1" name="TaxID" value="*"/>
5 </query>
Пример ответа: 01 <data eof="1">
02 <row>
03 <Min type="int64">76211</Min>
04 <Max type="int64">1158488</Max>
05 <Count type="int">1000</Count>
06 </row>
07 <row>
08 <Min type="int64">1158489</Min>
09 <Max type="int64">2112571</Max>
10 <Count type="int">1000</Count>
11 </row>
12 <row>
13 <Min type="int64">2112572</Min>
14 <Max type="int64">6605306</Max>
15 <Count type="int">1000</Count>
16 </row>
17 <row>
18 <Min type="int64">6605312</Min>
19 <Max type="int64">8424606</Max>
20 <Count type="int">1000</Count>
21 </row>
22 <row>
23 <Min type="int64">8424612</Min>
24 <Max type="int64">739895343</Max>
25 <Count type="int">1000</Count>
26 </row>
27 <row>
28 <Min type="int64">739895363</Min>
29 <Max type="int64">742336003</Max>
30 <Count type="int">121</Count>
31 </row>
32 </data>
|