Нам нужно оценить, как провести рефакторинг 1M JSON Временные документы. В СУБД (Oracle) группировка может быть достигнута без индекса как:
select cip, pr_currency, count() from asset group by cip, pr_currency having count( * ) >1
Необходимо создать аналогичный запрос в существующем MarkLogi c Временное хранилище документов без добавления индекса, TDE /Optic...etc. Мне удается добиться желаемых результатов в лаборатории с XQuery. Но когда я выполняю запрос к 1M Temporal-документам, группирующимся по 2 свойствам (исключаем значение ""), он возвращает пустую последовательность, которая является ложным результатом. XQ выглядит следующим образом:
let $allegro := collection("ultraAsset")/envelope
for $adagio in distinct-values($allegro//prCurrency[. != ""]),
$andante in distinct-values($allegro[prCurrency = $adagio]//cip[. != ""])
let $kraftig := cts:and-query((cts:json-property-value-query("prCurrency", $adagio),
cts:json-property-value-query("cip", $andante)
))
return ($adagio || ":" || $andante || ":" || count(cts:search(doc(), $kraftig)))
Не уверен, что количество документов способствует сбою при успехе в другой БД. Или есть лучший способ сделать запрос путем группировки (без добавления индекса)?