Не удается получить лучшие n-ые записи, отсортированные по значению в базе данных Cosmos - PullRequest
1 голос
/ 09 января 2020

Я пытаюсь получить первые 5 записей, упорядоченных по указанному c значению в базе данных Cosmos, но я застреваю при получении заказанных записей.

Запрос выполняется на следующем документе:

{
    "id":               string,
    "Compliant":        bool,
    "DefinitionId":     int,
    "DefinitionPeriod": string,
    "EventDate":        date,
    "HerdProfileId":    int,
    "Period":           int,
    "Value":            int
}

Что я пробовал:

1-я попытка

SELECT TOP 5 cr.HerdProfileId, cr.Compliant, cr.NonCompliant, cr.NullCompliant FROM (
    SELECT 
        c.HerdProfileId, 
        SUM(comp) as Compliant, 
        SUM(noncomp) as NonCompliant, 
        SUM(nullcomp) as NullCompliant 
    FROM c
    JOIN(SELECT VALUE COUNT(c.id) FROM c WHERE c.Compliant = true) comp
    JOIN(SELECT VALUE COUNT(c.id) FROM c WHERE c.Compliant = false) noncomp
    JOIN(SELECT VALUE COUNT(c.id) FROM c WHERE c.Compliant = null) nullcomp
    WHERE c.Period = 201948
    GROUP BY c.HerdProfileId) cr
WHERE cr.NonCompliant > 0
ORDER BY cr.NonCompliant

приводит к: Unsupported ORDER BY clause. ORDER BY item expression could not be mapped to a document path

2-я попытка:

SELECT TOP 5 cr.HerdProfileId, cr.Compliant, cr.NonCompliant, cr.NullCompliant FROM (
    SELECT 
        c.HerdProfileId, 
        SUM(comp) as Compliant, 
        SUM(noncomp) as NonCompliant, 
        SUM(nullcomp) as NullCompliant 
    FROM c
    JOIN(SELECT VALUE COUNT(c.id) FROM c WHERE c.Compliant = true) comp
    JOIN(SELECT VALUE COUNT(c.id) FROM c WHERE c.Compliant = false) noncomp
    JOIN(SELECT VALUE COUNT(c.id) FROM c WHERE c.Compliant = null) nullcomp
    WHERE c.Period = 201950
    GROUP BY c.HerdProfileId
    ORDER BY NonCompliant DESC) cr
WHERE cr.NonCompliant > 0

приводит к: ORDER BY' is not supported in presence of GROUP BY

Есть ли способ получить необходимые данные или это просто невозможно в Cosmos DB и нужно ли мне заказывать результаты в коде позже?

1 Ответ

0 голосов
/ 10 января 2020

Первое sql: Order by выражение элемента не может быть сопоставлено с путем документа. Пожалуйста, обратитесь к заявлениям в этом блоге :

enter image description here

Второй sql:

Order by пока не могу работать с Group By, пожалуйста, обратитесь к официальному заявлению:

enter image description here

Я полагаю, что вы должны следовать предложениям в моем предыдущий случай: Как сгруппировать и упорядочить в космосе db? Вы упорядочиваете результаты в коде до сих пор. Ожидание плана вышеуказанного 2-го оператора для группировки по и заказа по ...

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