MarkLogi c группировка JSON временная без индекса - PullRequest
0 голосов
/ 24 апреля 2020

Нам нужно оценить, как провести рефакторинг 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)))  

Не уверен, что количество документов способствует сбою при успехе в другой БД. Или есть лучший способ сделать запрос путем группировки (без добавления индекса)?

...