具有累积聚合样式的 HKQuantityType 月份的统计信息
Posted
技术标签:
【中文标题】具有累积聚合样式的 HKQuantityType 月份的统计信息【英文标题】:Statistics for month of HKQuantityType with Cumulative aggregation style 【发布时间】:2016-06-22 11:41:17 【问题描述】:我需要使用累积聚合样式创建 HKQuantityType 月份的统计信息,例如在 Health App 中的年视图中。
HKStatisticsCollectionQuery 只能计算累积类型的总和。
现在如何运作。 我正在制作 12 个 HKSampleQueries。每个任务都有一个谓词,其中包含一个月的开始和结束日期。 然后我遍历每个查询结果以计算有样本的天数(一天可以包含多个样本)。 准备好天数后,我将蛾子的总和除以天数。
主要问题是,如果我在一个飞蛾中获取所有样本,我会得到大约 10000 个样本。 月数为 12,因此一年中一个 Metric 的样本数约为 120000 个。
我在后台线程中运行它,但在计算每个月的平均值时内存量约为 180mb,计算大约需要一分钟。
有没有可能在一个月内获得样本数量,按天摸索? 我没有找到任何解决方案:(
【问题讨论】:
您能否更详细地解释您要计算的内容?我很难想象您想要找到累积样本集合的平均值的原因。 我想计算累积值的月份平均值。为此,我需要知道本月的样本数量。然后我可以将月份的总和除以月份的样本数。主要问题是我们一天可能有几个样本。我试图在一个查询中获取一年的所有样本并循环遍历数组。但它确实有操作,因为我们可以有超过 3000 个样本:( @Allan 解释清楚了吗? 要每个累积样本的平均值吗?这对我来说没有多大意义,因为每个样本可以涵盖截然不同的时间量(有些可能是 1 分钟和 1 小时的总和)。或者你想计算每个固定时间的平均总和,比如一个月的每日总和的平均值?如果您更具体地了解您试图向用户传达的数据类型和信息,这可能会有所帮助。 我需要 HealthKit 中具有累积聚合样式的每个 HKQuantityType 的平均值。例如,我需要去年每个月的 HKQuantityTypeIdentifierBasalEnergyBurned 平均值。所以它将从 2015 年 7 月、2015 年 8 月 ... 2016 年 7 月开始。然后 HKQuantityTypeIdentifierStepCount 等也是如此。 【参考方案1】:每隔一天尝试HKStatisticsCollectionQuery
。然后,您可以平均每天返回的总和。它应该比查询每个月的所有样本效率高出几个数量级(并且更正确,因为您需要考虑 HKSampleQuery
返回的重叠样本)。
【讨论】:
谢谢!与 SampleQuery 相比,它的匹配速度更快。 12 个月的统计现在在 5-7 秒内完成。我不认为这是非常快速的解决方案:)以上是关于具有累积聚合样式的 HKQuantityType 月份的统计信息的主要内容,如果未能解决你的问题,请参考以下文章