如何使用C#从Azure表存储中检索最新记录?

问题描述 投票:0回答:1

我面临着天蓝色表存储的问题。我需要查询存储表中成千上万的数据。

  1. 第一种方法是检索所有数据,然后根据需求进行查询,但会花费太多时间。

  2. 第二种方法是,如果我直接使用查询从表存储中获取经过过滤的数据

因此,根据我的理解,第二种方法是最好的,但我无法进行适当的查询。我如何从Azure表存储中检索最后一个条目,在这种情况下,我还尝试通过函数进行MAX和排序,但对我而言不起作用。

未运行代码:

var query2 = new TableQuery().Where(
TableQuery.CombineFilters(
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, patientId.ToString()),
TableOperators.And,
TableQuery.GenerateFilterConditionForGuid("DeviceID", QueryComparisons.Equal, deviceId))
).OrderByDescending(x=>x.EventDate).Take(1).Select(x=>x.EventDate).ToList();

运行代码需要太多时间:

var query = new TableQuery<TherapyEvent>().Where( 
TableQuery.CombineFilters( 
TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, patientId.ToString()), 
TableOperators.And, 
TableQuery.GenerateFilterConditionForGuid("DeviceID", QueryComparisons.Equal, deviceId)) ); 

var resp= _table.ExecuteQuery(query).OrderByDescending(x=>x.EventDate).Take(1).Select(x=>x.EventDate).ToList()
c# azure azure-table-storage azure-tablequery
1个回答
1
投票

到目前为止,还没有直接的方法可以使用RowKey属性获取最新记录。但是,您可以移动RowKey并按相反的时间顺序列出它,然后获取最上面的条目,这将是最新的。

您可以查看此博客以获取更多详细信息:

http://blog.smarx.com/posts/using-numbers-as-keys-in-windows-azure

附加参考:

How to retrieve latest record using RowKey or Timestamp in Azure Table storage

[Note:为行键使用字符串日期时间不是一个好方法,因为表存储基于行键以升序存储实体。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.