# Extracts to S3, GCS or Azure Blob | DRE

> Parquet or csv extracts, written where downstream systems pick them up.

[← All use cases](https://getdre.com/#use-cases)

# Extracts to S3, GCS or Azure Blob

Another team or system wants a typed extract in a bucket, partitioned by date, every day. Selecting the rows is the easy part; naming the file, typing the columns and getting it to the right bucket is the part DRE takes off your hands.

Recorded from a real run: one command, then the file in each of the three stores.

Recorded from a real run: one command, then the file in each of the three stores.

[↓ Download the parquet file (regions.parquet)](https://getdre.com/media/downloads/regions.parquet)

reports/extracts/extracts.yml

```yaml
queries: [extract_regions]
output:
  format: parquet
  destination:
    - {profile: s3_keys, path: "s3://dre-demo/extracts/{{ run.date.yyyy }}/{{ run.date.mm }}/regions.parquet"}
    - {profile: gcs, path: "extracts/regions-{{ run.date.yyyymmdd }}.parquet"}
    - {profile: azure_cs, path: "extracts/regions-{{ run.date.yyyymmdd }}.parquet"}
```

reports/extracts/extract\_regions.sql

```sql
select * from {{ ref('delivery_sample') }}
```

terminal

```bash
dre run extracts
```

### What to notice

-   One report can write to several destinations at once.
-   Paths are templates: the run date, report variables and Sets can all appear in them.
-   Typed parquet keeps your column types; csv is one option away.
-   Credentials come from your profile or the cloud credential chain, never from the report.

### In the docs

-   [Plugins and destinations →](https://getdre.com/docs/plugins/)
-   [Templates →](https://getdre.com/docs/templates/)
