C# 如何检索Azure表中的最新行?

C# 如何检索Azure表中的最新行?,c#,azure,nosql,C#,Azure,Nosql,我正在尝试检索Azure自动创建的主分钟度量表中创建的最新行。有没有办法不用扫描整张桌子就能做到这一点?分区键基本上是不同格式的时间戳。例如: 20150811T1250 但是,我无法知道最新的partitionkey是什么,所以我不能只按分区查询。此外,行键是无用的,因为所有行都具有相同的行键。我完全不知道该怎么做,尽管这似乎是一件非常基本的事情。有什么想法吗 表中几行的分区键示例: 20150813T0623 20150813T0629 20150813T0632 20150813T063

我正在尝试检索Azure自动创建的主分钟度量表中创建的最新行。有没有办法不用扫描整张桌子就能做到这一点?分区键基本上是不同格式的时间戳。例如:

20150811T1250
但是,我无法知道最新的partitionkey是什么,所以我不能只按分区查询。此外,行键是无用的,因为所有行都具有相同的行键。我完全不知道该怎么做,尽管这似乎是一件非常基本的事情。有什么想法吗

表中几行的分区键示例:

20150813T0623
20150813T0629
20150813T0632
20150813T0637
20150813T0641
20150813T0646
20150813T0650
20150813T0654


编辑:作为后续问题。有办法向后扫描表格吗?这将允许我只扫描第一行,因为这将是最新的一行

在查询数据时,Azure表提供的选择非常有限。假设您知道如何分配PartitionKey(YYYYMMDDTHHmm格式),一种可能的解决方案是从当前日期/时间(UTC)减去一些到当前日期/时间的偏移量进行查询,然后从那里开始

例如,假设开始时间为2015年12月3日00:00:00。您可以尝试从2015年12月2日23:00:00到2015年12月3日00:00:00获取数据,并查看是否返回任何记录。如果返回记录,您只需获取结果集中的最后一个条目,这将是您的最新条目。如果未找到任何记录,则向后移动1小时(即从2015年12月2日22:00:00到2015年12月2日23:00:00),再次获取记录并重复此操作,直到找到匹配的结果


还有一个想法(虽然有点复杂)是创建另一个表,并定期将数据从主表复制到这个新表。复制数据时,需要做的是获取
PartitionKey
值,从中创建一个日期/时间对象,从
DateTime.MaxValue
中减去该值。计算此新值的刻度,并将其用作新实体的
PartitionKey
(您需要将该刻度转换为字符串,并进行一些字符串预添加,以便所有值的长度相同)。现在,最新条目将始终位于顶部。

在查询数据时,Azure表提供的选择非常有限。假设您知道如何分配PartitionKey(YYYYMMDDTHHmm格式),一种可能的解决方案是从当前日期/时间(UTC)减去一些到当前日期/时间的偏移量进行查询,然后从那里开始

例如,假设开始时间为2015年12月3日00:00:00。您可以尝试从2015年12月2日23:00:00到2015年12月3日00:00:00获取数据,并查看是否返回任何记录。如果返回记录,您只需获取结果集中的最后一个条目,这将是您的最新条目。如果未找到任何记录,则向后移动1小时(即从2015年12月2日22:00:00到2015年12月2日23:00:00),再次获取记录并重复此操作,直到找到匹配的结果


还有一个想法(虽然有点复杂)是创建另一个表,并定期将数据从主表复制到这个新表。复制数据时,需要做的是获取
PartitionKey
值,从中创建一个日期/时间对象,从
DateTime.MaxValue
中减去该值。计算此新值的刻度,并将其用作新实体的
PartitionKey
(您需要将该刻度转换为字符串,并进行一些字符串预添加,以便所有值的长度相同)。现在,最新的条目将始终位于顶部。

如果我得到正确的询问,您希望得到表中创建的最新行•$MetricsMinutePrimary Transactions表是的,这是正确的@Brijrajsinghi如果我得到正确的询问,您希望得到表中创建的最新行•$MetricsMinutePrimary Transactions表是的,这是正确的@BrijRajSinghI在发布问题之前已经尝试过这个想法(这是你提出的第一个想法)。但是,有些帐户没有最近的表项,因此需要很长时间才能迭代到匹配的分区键。第二个想法在我看来似乎有点过分。实际上,在发布问题之前,我已经尝试过这个想法(你提出的第一个想法)。但是,有些帐户没有最近的表项,因此需要很长时间才能迭代到匹配的分区键。第二个想法在我看来似乎有点过分。