Предложение GROUP BY не работает в Azure CosmosDB

#azure-cosmosdb #azure-cosmosdb-sqlapi

#azure-cosmosdb #azure-cosmosdb-sqlapi

Вопрос:

Я использую следующую зависимость для подключения к Azure cosmos db

 <dependency>
        <groupId>com.microsoft.azure</groupId>
        <artifactId>azure-documentdb</artifactId>
        <version>LATEST</version>
    </dependency>
 

И используя этот запрос

 "SELECT c.parentid, COUNT(1) AS count FROM collection c WHERE c.parentid != 'null' GROUP BY c.parentid"
 

И я получаю следующую ошибку —

 {"errors":[{"severity":"Error","location":{"start":91,"end":96},"code":"SC1001","message":"Syntax error, incorrect syntax near 'GROUP'."}
 

Есть ли какая-либо конфигурация, которой мне не хватает в приложении Java, или group by не поддерживается?

Комментарии:

1. Если вы зайдете в обозреватель данных (на портале Azure), вы можете запустить SQL: получаете ли вы там ту же ошибку?

2. Но также 'null » это строка, вы имели в виду where c.parientId is not null ?

3. да, я имею в виду, где c.parientId не равен null (нулевая строка)

4. Первое, что нужно проверить: конфликт имен. Вы назвали столбец count , который также является зарезервированным словом. Изменяется ли ошибка при переименовании count на что-то другое? Или все еще ошибка? Примечание: даже если это не имеет никакого отношения к ошибке, я предлагаю не использовать ключевые слова в качестве имен столбцов.

5. @DavidMakogon — ошибка остается неизменной после переименования

Ответ №1:

Проблема в том, что вы используете старую версию Java SDK, которая не поддерживает GROUP BY.

Пожалуйста, обновите Java SDK до последней версии 4. Раздел зависимостей должен выглядеть следующим образом.

 <dependency>
   <groupId>com.azure</groupId>
   <artifactId>azure-cosmos</artifactId>
   <version>4.8.0</version>
</dependency>
 

Если вы новичок в использовании Java SDK версии 4, в него включены модули синхронизации и асинхронности. Вы можете взглянуть, следуя этому здесь, Quickstart: создайте Java-приложение для управления данными SQL API Azure Cosmos DB

Комментарии:

1. Я получаю эту ошибку с вышеуказанной зависимостью — не удалось создать экземпляр [com.azure.cosmos. CosmosClient]: Фабричный метод ‘cosmosClient’ выдал исключение; вложенным исключением является java.lang. Ошибка NoSuchFieldError: ALLOW_TRAILING_COMMA