2017-03-08 7 views
0

私のテーブル構造には、パーティションキー、行キー、JSONデータを含む列があります。パーティションキーとJSONデータの特定の値に基づいてテーブルをクエリします。Azureテーブルストレージの非パーティションキーと非行キーの照会

サンプル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

すでにjsonオブジェクトを使用している場合は、ドキュメントDBを検討することをお勧めします。私は、jsonプロパティでドキュメントdbを照会することが可能でなければならないと考えています。 –

答えて

2

テーブルストレージは、残念ながらContainsのようなワイルドカードマッチングをサポートしていません。しかし、あなたのJSONデータは常にまだ{"ConsumerId":"value",

ベターで始まる場合にのみ動作します - - あなたは不平等整合器として、StartsWithのように振る舞うことができCompareToを、使用することを検討することができます

https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/query-operators-supported-for-the-table-serviceを参照)、追加としてConsumerIdを追加コンシューマIDを含むコンポジットキーを使用するようにパーティションと行のキー構造を再考する必要があります。これはパフォーマンスにも役立ちます。

関連する問題