Запрос не разделенного и нестрочного ключа в хранилище таблиц 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
в качестве дополнительного поля или переосмыслите структуру ключа раздела и строки, чтобы использовать составные ключи, включающие идентификатор потребителя, что также должно способствовать повышению производительности.