2011-12-23 9 views
0

Azureに問い合わせて、どのパーティションが利用可能かを判断したいと思っています。これには2つの異なるユースケースがあります。Azureテーブルの既存のパーティションを判別する方法はありますか?

1)レポート集計を照会するとき、一部のパーティションは、特定の日付に実行されたもののロギング情報に基づいています。パーティションキーはデータセットを示し、その中のデータはその日付の操作です。私は、そのパーティションの統計情報を別のテーブルに集約しています。つまり、1日後の後処理が完了したことを示します。

例:テーブル名:DailyAggregation のPartitionKey:得意:5、YYYY-MM-DD

私は存在しないテーブルのパーティションを照会しようとしないようにしたい、とすべて処理する必要はありませんデータの毎日。たとえば、私は5ヶ月の統計を持ち、最初の4日間を処理しましたが、数日または数週間のギャップがあります。存在しないパーティション内のデータをクエリする必要はありません。

2)一部のパーティションは、今後削除される可能性のある識別子に基づいています。私はいくつかのシステムインテグリティコードを書いて、それらへの参照がもはや存在しないデータを保持するパーティションを特定し、削除できるようにしたいと考えています。すなわち:孤児データ。

例:テーブル名:DailyAggregation のPartitionKey:得意先:5、YYYY-MM-DD

得意はSQL Azureの中に格納されています。 Customer行が削除されたとします。私は、もはや参照されていないデータをパージするためにもはや存在しないこのCustomerIDに対してDailyAggregationパーティションが存在するかどうかを簡単に判断できるようにしたい。

思考?

答えて

0

ここで私はそれをやります。

まず、テーブル全体の最初の要素を選択します。私はPartitionKeyまたはRowKeyを指定せずに、最初の行を取得するために "Take 1"を指定することでこれを行います。

次は、Take 1クエリから取得したパーティションキーと一致するすべての行を取得する別のクエリを作成します。

次に、次のelmentsのセットを取得するには、取得したパーティションキーの後ろにある最初のパーティションキーを取得します。したがって、パーティションキーが日付の場合、単に日付に1を追加するだけで、クエリは「PartitionKey> = LastDate.AddDay(1)」のようになります。このクエリを正しく実行するには、日付を長い型に変換し、文字列表現が同じ長さになるように貼り付けます。

その後、不必要な日付を問い合せなくても、テーブルの内容全体を取得するために説明した内容を反復することができます。

+0

これは私が探しているものに近いですが、データの整合性チェックを行うために存在するパーティションを判断するのに役立ちません。実際、私のデータ完全性チェックは、システムから削除できるデータを特定するためのものです。特定の例で質問を更新しました。 新しいテーブルパーティションを個別に作成するたびに、私は単に追跡する必要がありますか?それはむしろ私が引き受けたくないオーバーヘッドのようです。たぶん、すべてのパーティションとRowKeyでRowKeyを設定できますが、PartitionKeyではできません。思考? –

関連する問題