查询 Azure Table 存储中的非分区和非行键
Querying non-partition and non-row key in the Azure Table Storage
我的 table 结构有一个分区键、行键和一个包含 JSON 数据的列。我想根据分区键和 JSON 数据中的特定值查询 table。
样本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)));
但它没有给我想要的结果。任何人都可以帮助我进行正确的查询吗?
不幸的是,Table 存储不支持像 Contains
这样的通配符匹配。 (参见 https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/query-operators-supported-for-the-table-service)
您可以考虑使用 CompareTo
,它的作用类似于 StartsWith
,作为不等式匹配器 - 但这仅在您的 JSON 数据始终以 [=13= 开头时才有效]
更好 - 添加 ConsumerId
作为附加字段,或重新考虑分区和行键结构以使用包含消费者 ID 的复合键,这也有助于提高性能。
我的 table 结构有一个分区键、行键和一个包含 JSON 数据的列。我想根据分区键和 JSON 数据中的特定值查询 table。
样本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)));
但它没有给我想要的结果。任何人都可以帮助我进行正确的查询吗?
Table 存储不支持像 Contains
这样的通配符匹配。 (参见 https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/query-operators-supported-for-the-table-service)
您可以考虑使用 CompareTo
,它的作用类似于 StartsWith
,作为不等式匹配器 - 但这仅在您的 JSON 数据始终以 [=13= 开头时才有效]
更好 - 添加 ConsumerId
作为附加字段,或重新考虑分区和行键结构以使用包含消费者 ID 的复合键,这也有助于提高性能。