Запрос не разделенного и нестрочного ключа в хранилище таблиц Azure

Моя структура таблицы имеет ключ раздела, ключ строки и столбец, содержащий данные JSON. Я хочу запросить таблицу на основе ключа раздела и конкретного значения из данных JSON.

Пример данных JSON:

{"ConsumerId":"7","value01":"850.58"}

Запрос, который я создал

var query = new TableQuery<CloudModelDetail>().Where(TableQuery.CombineFilters(TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, retailerReferenceId),
            TableOperators.And, TableQuery.GenerateFilterCondition("CloudModelJsonData","Contains", consumerId)));

Но это не дает мне желаемых результатов. Может кто-нибудь помочь мне с правильным запросом?

1 ответ

Решение

Table Storage не поддерживает сопоставление с подстановочными знаками, например Contains, к несчастью. (См. https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/query-operators-supported-for-the-table-service)

Вы можете рассмотреть возможность использования CompareTo, который может действовать как StartsWith, как сопоставитель неравенства - но это будет работать, только если ваши данные JSON всегда начинаются с {"ConsumerId":"value",

Еще лучше - добавить ConsumerId в качестве дополнительного поля или переосмыслите структуру ключа раздела и строки, чтобы использовать составные ключи, включающие идентификатор потребителя, что также должно способствовать повышению производительности.

Другие вопросы по тегам