2016-06-22 19 views
1

Ich muss Statistiken für den Monat von HKQuantityType mit kumulativen Aggregation Stil, wie in Health App auf Jahresansicht erstellen.Statistiken für den Monat von HKQuantityType mit kumulativen Aggregation Stil

HKStatisticsCollectionQuery kann nur Summen für kumulative Typen berechnen.

Wie es jetzt funktioniert. Ich mache 12 HKSampleQueries. Jede Quest hat ein Prädikat mit Anfangs- und Enddatum eines Monats. Dann wiederhole ich jedes Abfrageergebnis, um die Anzahl der Tage mit Samples zu berechnen (Ein Tag kann mehr als ein Sample enthalten). Nach der Anzahl der Tage bereit bin ich die Summe der Motten an der Anzahl der Tage teilen.

Hauptproblem ist, dass, wenn ich alle Proben in einer Nachtfalter, habe ich etwa 10.000 Proben. Anzahl der Monate ist 12, also sind es etwa 120000 Proben für die eine Metrik in einem Jahr.

Ich führe es in einem Hintergrund Threads, aber die Menge des Speichers ist etwa 180mb während Berechnung Durchschnitt für jeden Monat und es dauert etwa eine Minute zu berechnen.

Gibt es irgendwelche Möglichkeiten, um die Anzahl der Proben in einem Monat zu erhalten, tagsüber gegriffen? Ich habe keine Lösung dafür gefunden :(

+0

Können Sie genauer erklären, was Sie zu berechnen versuchen? Ich habe Schwierigkeiten, sich einen Grund vorzustellen, den Sie möchten finde den Durchschnitt einer Sammlung von kumulativen Stichproben – Allan

+0

Ich möchte den Durchschnittswert für den Monat für kumulative Werte berechnen, dafür muss ich die Anzahl der Stichproben für den Monat kennen Dann kann ich die Summe des Monats durch die Anzahl der Stichproben in Monat teilen h. Hauptproblem ist, dass wir mehrere Proben an einem Tag haben könnten. Ich habe versucht, alle Proben für das Jahr in einer einzigen Abfrage und Schleife durch Array zu bekommen. Aber es hat wirklich Operation, weil wir über 3000 Proben haben konnten :( – artyom

+0

@Allan erklärt es klar? – artyom

Antwort

1

Versuchen Sie HKStatisticsCollectionQuery mit einem Intervall von einem Tag. Sie können dann die Summen pro Tag, die zurückgegeben werden, Durchschnitt. Es sollte um Größenordnungen effizienter sein als die Abfrage für alle Proben in jedem Monat (und korrekter, da Sie überlappende Proben berücksichtigen müssten, die von HKSampleQuery zurückgegeben wurden)

+0

Danke! Es funktioniert schneller als mit SampleQuery. Stat für die 12 Monate jetzt in 5-7 Sekunden abgeschlossen. Ich habe nicht gedacht, dass es eine schnelle Lösung ist :) – artyom