---
title: Downsample data with notebooks
description: Create a notebook to downsample data. Downsampling aggregates or summarizes data within specified time intervals, reducing the overall disk usage as data collects over time.
url: https://docs.influxdata.com/influxdb/v2/tools/notebooks/downsample/
estimated_tokens: 920
product: InfluxDB OSS v2
version: v2
publisher: InfluxData
canonical: https://docs.influxdata.com/influxdb/v2/tools/notebooks/downsample/
date: '2025-04-02T15:54:32-06:00'
lastmod: '2025-04-02T15:54:32-06:00'
---

This page documents an earlier version of InfluxDB OSS.[InfluxDB 3 Core](/influxdb3/core/) is the latest stable version.

#### API token hashing is enabled by default in InfluxDB OSS 2.9.0

Stronger token security: tokens are stored as hashes on disk, so a
copy of the database file doesn’t expose usable tokens. Existing
tokens are hashed on first startup and the original strings can’t
be recovered afterward — **capture any plaintext tokens you still
need before you upgrade**.

For more information, see [Token hashing](/influxdb/v2/admin/tokens/#token-hashing).

Create a notebook to downsample data. Downsampling aggregates or summarizes data
within specified time intervals, reducing the overall disk usage as data
collects over time.

The following example creates a notebook that queries **Coinbase bitcoin price
sample data** from the last hour, downsamples the data into ten minute summaries,
and then writes the downsampled data to an InfluxDB bucket.

1. If you do not have an existing bucket to write the downsampled data to,[create a new bucket](/influxdb/v2/admin/buckets/create-bucket/).

2. [Create a new notebook](/influxdb/v2/tools/notebooks/create-notebook/).

3. Select **Past 1h** from the time range drop-down list at the top of your notebook.

4. In the **Build a Query** cell:

   1. In the **FROM** column under **Sample**,
      select **Coinbase bitcoin price**.
   2. In the next **FILTER** column, select **\_measurement** from the drop-down list
      and select the **coindesk** measurement in the list of measurements.
   3. In the next **FILTER** column, select **\_field** from the drop-down list,
      and select the **price** field from the list of fields.
   4. In the next **FILTER** column, select **code** from the drop-down list,
      and select a currency code.

5. Click  after your **Build a Query** cell to
   add a new cell and select **Flux Script**.

6. In the Flux script cell:

   1. Use `__PREVIOUS_RESULT__` to load the output of the previous notebook
      cell into the Flux script.

   2. Use [`aggregateWindow()`](/flux/v0/stdlib/universe/aggregatewindow/)to window data into ten minute intervals and return the average of each interval.
      Specify the following parameters:

      * **every**: Window interval *(should be less than or equal to the duration of the queried time range)*.
        For this example, use `10m`.
      * **fn**: [Aggregate](/flux/v0/function-types/#aggregates)or [selector](/flux/v0/function-types/#selectors) function
        to apply to each window.
        For this example, use `mean`.

   ```
   __PREVIOUS_RESULT__
       |> aggregateWindow(every: 10m, fn: mean)
       |> to(bucket: "example-bucket")
   ```

7. Click  after your**Flux Script** cell to add a new cell and select**Output to Bucket**.
   Select a bucket from the  **Choose a bucket**drop-down list.

8. *(Optional)* Click  and select **Note** to
   add a note to describe your notebook, for example,
   “Downsample Coinbase bitcoin prices into hourly averages.”

9. Click **Preview** in the upper left to verify that your
   notebook runs and displays the output.

10. Click **Run** to run the notebook and write the downsampled data to your bucket.

## Continuously run a notebook

To continuously run your notebook, export the notebook as a task:

1. Click  to add a new cell, and then select**Task**.

2. Provide the following:

   * **Every**: Interval that the task should run at.
   * **Offset**: *(Optional)* Time to wait after the defined interval to execute the task.
     This allows the task to capture late-arriving data.

3. Click  **Export as Task**.

[notebooks](/influxdb/v2/tags/notebooks/)
