7

1000k 以上の行 (エンティティ) を格納している Windows Azure ストレージ テーブルがあります。テーブルに対していくつかの集計関数を実行したいと考えています。たとえば、特定の条件、、、、および (通常の SQL のように) に対して特定の列をカウントaverageするなどです。Windows Azure Storage テーブルでそれを行うにはどうすればよいですか?totalminmaxgroup by

4

2 に答える 2

7

唯一の方法は、すべてのエンティティをプルダウンして、それらに対してメモリ内で集計を実行することです。

この情報を最新の状態に保つ必要がある場合は、これらの集計を別の場所に保存し、新しいエンティティが追加されるたびに更新します。たとえば、平均はsum/count、現在の合計とカウントを格納するテーブル アイテムを持つことができ、新しいエンティティを追加すると、合計とカウントの値も更新されます。

競合状態などをキャッチできるように、オプティミスティック コンカレンシーを必ず使用してください。テーブル エンティティが同じパーティション キーを共有している場合は、同じトランザクションで操作を実行することもできます。

于 2013-04-03T10:59:26.363 に答える
0

短い答えは (私の知る限り、2015 年 6 月現在) できないということです。参照: http://feedback.azure.com/forums/263030-documentdb/suggestions/6333963-add-support-for-aggregate-functions-like-count-su

アップデート。 上記にリンクされている情報は、Table Storage (doh) ではなく DocumentDB に適用されます (DocumentDB は ATS と同様に NoSQL 実装でもあります)。

そうは言っても(そしてOPの質問をREします)、ほとんど同じ状態がテーブルストレージにも当てはまります。この提案: ' Select、Count、Contains の TableStorage LINQ クエリ サポートを追加します' は、OP の後にあるものと同一ではありませんが、正しい一般的な方向への動きであると思います。残念ながら、彼らはこれらの機能の実装を開始したように見えますが、まだ多くの手動コーディングを自分で行う必要があります。

射影機能のクエリ

プロジェクションとは、エンティティまたはエンティティのプロパティのサブセットをクエリすることを指します。これは、LINQ でクエリを実行するときに、特定のテーブルの列/プロパティのサブセットを選択することに似ています。これは、特定のプロパティのみが応答で返されるように指定することで、アプリケーションがクエリによって返されるデータの量を減らすことができるメカニズムです。詳細については、Windows Azure テーブル: クエリ エンティティ、Windows Azure テーブル: LINQ クエリの記述、WCF データ サービス: クエリ プロジェクション、および OData: システム クエリ オプションの選択 ($select) も参照してください。

私の読めないことを丁寧に指摘してくれた@abatishchevに感謝します。

于 2015-06-30T22:27:20.523 に答える