0

我正面临 azure 表存储的问题。我需要查询的存储表中有数十万条数据。

  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()
4

1 回答 1

2

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

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

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

附加参考:

如何在 Azure 表存储中使用 RowKey 或时间戳检索最新记录

Note: 使用字符串日期时间作为行键不是一个好方法,因为表存储根据行键按升序存储实体。

希望能帮助到你。

于 2019-12-06T12:14:35.817 回答