<!--
{
  "availability" : [
    "iOS: 15.4.0 -",
    "iPadOS: 15.4.0 -",
    "macCatalyst: 15.4.0 -",
    "macOS: 13.0.0 -",
    "visionOS: -",
    "watchOS: 8.5.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "HealthKit",
  "identifier" : "/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor",
  "metadataVersion" : "0.1.0",
  "role" : "Structure",
  "symbol" : {
    "kind" : "Structure",
    "modules" : [
      "HealthKit"
    ],
    "preciseIdentifier" : "s:9HealthKit37HKQuantitySeriesSampleQueryDescriptorV"
  },
  "title" : "HKQuantitySeriesSampleQueryDescriptor"
}
-->

# HKQuantitySeriesSampleQueryDescriptor

A query interface that reads the series data associated with quantity samples using Swift concurrency.

```
struct HKQuantitySeriesSampleQueryDescriptor
```

## Overview

Use [`HKQuantitySeriesSampleQueryDescriptor`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor) to read the series data included in quantity samples. Apps can save any quantity data as a series using the [`HKQuantitySeriesSampleBuilder`](/documentation/HealthKit/HKQuantitySeriesSampleBuilder) class; however, series data typically comes from high-frequency data saved during a workout. Any [`HKQuantitySample`](/documentation/HealthKit/HKQuantitySample) that has a [`count`](/documentation/HealthKit/HKQuantitySample/count) greater than `1` contains series data.

> Important:
> Only use this query when you need direct access to the high-frequency series data, for example when visualizing the raw data or when exporting objects from the HealthKit store. For most common calculations, consider using a statistical query instead. Statistical queries correctly handle quantity data, whether the samples represent a single quantity or a series.

To read the individual data entries, create a predicate that identifies the sample type and limits the results to the desired data. For example, to read the series for a particular sample object, include a [`predicateForObject(with:)`](/documentation/HealthKit/HKQuery/predicateForObject(with:)) predicate. However, if you’re reading high-frequency data during a workout, you may want to include a [`predicateForSamples(withStart:end:options:)`](/documentation/HealthKit/HKQuery/predicateForSamples(withStart:end:options:)) predicate that returns matching series data based on the workout’s time period instead.

```swift
// Create the predicate for the data.
let heartRate = HKQuantityType(.heartRate)
let objectPredicate = HKQuery.predicateForObject(with: myHeartRateSample.uuid)
let predicate = HKSamplePredicate.quantitySample(type: heartRate,
                                                 predicate: objectPredicate)


// Create the source descriptor.
let seriesDescriptor =
HKQuantitySeriesSampleQueryDescriptor(predicate: predicate,
                                      options: .orderByQuantitySampleStartDate)

// Get the AsyncSequence that returns the individual data entries.
let series = seriesDescriptor.results(for: store)

// Access each data entry in the series
for try await entry in series {
    
    // Process results here.
    let steps = entry.quantity.doubleValue(for: .count())
    print(steps)
}
```

While this method returns an <doc://com.apple.documentation/documentation/Swift/AsyncSequence>, unlike the long-running queries, this sequence has a finite size. Iterating over the sequence asynchronously returns data entries, automatically terminating after you receive all the data.

## Topics

### Creating Series Query Descriptors

[`init(predicate: HKSamplePredicate<HKQuantitySample>, options: HKQuantitySeriesSampleQueryDescriptor.Options)`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/init(predicate:options:))

Creates a quantity series query descriptor.

[`struct Options`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/Options-swift.struct)

Options used when querying series data.

### Running Queries

[`func results(for: HKHealthStore) -> HKQuantitySeriesSampleQueryDescriptor.Results`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/results(for:))

Runs a one-shot query that returns an asynchronous sequence of matching series samples.

[`struct Results`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/Results)

An asynchronous sequence that emits data from the quantity series query.

[`struct Result`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/Result)

A set of results from a quantity series sample descriptor.

### Accessing Query Properties

[`var options: HKQuantitySeriesSampleQueryDescriptor.Options`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/options-swift.property)

A set of options for the query. For a list of possible values, see [`HKQuantitySeriesSampleQueryDescriptor.Options`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/Options-swift.struct).

[`var predicate: HKSamplePredicate<HKQuantitySample>`](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/predicate)

A predicate that defines the set of series samples that the query returns.

### Default Implementations

[HKAsyncSequenceQuery Implementations](/documentation/HealthKit/HKQuantitySeriesSampleQueryDescriptor/HKAsyncSequenceQuery-Implementations)

## Relationships

### Conforms To

[`HKAsyncSequenceQuery`](/documentation/HealthKit/HKAsyncSequenceQuery)

[`Copyable`](/documentation/Swift/Copyable)

[`Escapable`](/documentation/Swift/Escapable)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)