3

パーティション キーが毎秒生成される DateTime ティックであるテーブル ストレージがあります。

その時点で生成されたパーティション キーを照会して、特定の日付からレコードを取得したいと考えています。

日付を指定してティックに変換する方法が必要だと思います。または、クエリに対するより良いアプローチはありますか?

4

2 に答える 2

3

単に .Ticks を使用するだけではありません。少し前にこれについてブログを書きました: NuGet package for creating and querying Table Storage entities in (reverse) chronological order . NuGet パッケージ (古いテーブル ストレージ SDK と新しいテーブル ストレージ SDK の両方をサポート) を使用すると、現在の時刻に基づいてエンティティを作成したり、クエリを実行したりできます (日付範囲もサポートされます)。

エンティティの作成(参照RowKey.CreateChronological)

foreach (var blogPost in BlogReader.Read())
{
    table.Execute(TableOperation.Insert(new Model.BlogPostEntity()
    {
        Author = blogPost.Author,
        PartitionKey = "WindowsAzure",
        PublishedOn = blogPost.PublishedOn,
        Title = blogPost.Title,
        RowKey = RowKey.CreateChronological(blogPost.PublishedOn)
    }));
}

エンティティのクエリ( を参照QueryDateReverseChronologicalComparisons.After)

var ctx = new Microsoft.WindowsAzure.Storage.Table.DataServices.TableServiceContext(table.ServiceClient);
var query = ctx.CreateQuery<BlogPostTableServiceEntity>("ChronoTableStorageSample")
               .Where(QueryDateReverseChronologicalComparisons.After, 
                        DateTime.Parse("2012-12-10 00:00:00"));

foreach (var blogPost in query)
{
    Console.WriteLine("{0:yyyy-MM-dd}: {1}", blogPost.PublishedOn, blogPost.Title);
}
于 2013-01-09T13:17:22.563 に答える
3

.Ticks日時にプロパティが必要なようです:

http://msdn.microsoft.com/en-gb/library/system.datetime.ticks.aspx

データ構造を実際に grep することなく、必要なすべてのレコードを取得するために何らかの種類の中間クエリが必要になる場合があり、2 つの日付を指定する可能性があります。

ticks キーが C# 経由で生成されていない場合、同じレベルの精度でキーを取得するには、ティックを生成しているメカニズムを使用する必要がある場合があることに注意してください。t-sql の例については、以下のリンクを参照してください。

T-sql、ティック、タイムスタンプ

于 2013-01-09T12:44:08.990 に答える