# Export widget data to CSV

## Download and analyze widget data

Export the data shown in a widget to a comma-separated-values (CSV) file.

Use the CSV file to:

- Analyze results in BI or spreadsheet tools
- Compare csv results with deployment or performance data
- Share findings with your team

## What you need

- A dashboard with at least one [Dynamic Widget](https://coralogix.com/docs/user-guides/custom-dashboards/widgets/dynamic-widget/index.md) (including tables, bar charts, pie charts, heatmaps, and other suggested visualizations) or [DataPrime Widget](https://coralogix.com/docs/user-guides/custom-dashboards/widgets/dataprime-widget/index.md).
- The `team-dashboards:Read` [permission](https://coralogix.com/docs/user-guides/custom-dashboards/permissions/), which allows you to view public custom dashboards.

## How CSV export works

When you export widget data to a CSV file, it contains the same results displayed in the widget after the query runs, reflecting the applied grouping, filtering, and aggregation.

CSV export works at the **widget level**. There is no dashboard-level CSV export.

- If your widget groups results by multiple fields, the CSV includes those fields as columns along with the aggregated values. For example, a [DataPrime](https://coralogix.com/docs/dataprime/beginners-guide/index.md) query such as:

  ```sql
  source logs 
  | groupby $l.subsystemname, $m.severity
    aggregate count()
  ```

  Exporting this widget to CSV produces columns for `subsystemname`, `severity`, and `count`.

- If your widget uses a raw, [unprojected query](https://coralogix.com/docs/user-guides/custom-dashboards/widgets/dynamic-widget/#unprojected-queries)—without any grouping or aggregation—the CSV flattens the event’s JSON data into a table. For example:

  ```DataPrime
  source logs | filter $l.applicationname == 'demo'
  ```

The CSV converts each JSON field into its own column, and each row represents one event.

- The file downloads through your browser and appears in the location where your browser typically saves files.

## Export a widget to CSV

1. Open the widget’s more actions menu.
1. Select **Export widget to CSV**.
1. Open the downloaded file.

## Example: export grouped results to CSV

A widget that groups logs by **subsystem** and **HTTP response code**, then counts the number of events in each group, shows an aggregated view of error patterns.

This example shows how grouped log data appears when exported to CSV.

```DataPrime
source logs
| filter http_resp_status != null
| groupby $l.subsystemname, http_resp_status
  aggregate count()
```

A widget using this query displays the number of requests per subsystem and HTTP status code.

Exporting the widget to CSV produces a table with columns for:

- `subsystemname`
- `http_resp_status`
- `count`

You can use the CSV to:

- Review error distributions in a spreadsheet
- Compare status patterns across subsystems

## Limits and constraints

- **2000-record limit**:

  - The CSV includes up to 2,000 rows. If more results exist, the widget displays a **Partial Data** notice.
  - The CSV includes only the rows currently shown in the widget.
  - To export a complete dataset, refine your query or narrow the time range so fewer than 2,000 events are returned.

- **Supported widget types**:

  CSV export is supported for the following widgets:

  - [Dynamic Widgets](https://coralogix.com/docs/user-guides/custom-dashboards/widgets/dynamic-widget/index.md)
  - Any widget that uses a DataPrime query

CSV export is not supported for legacy widgets. If you are using a legacy widget, select **Convert to DataPrime** in the Query Builder to enable CSV export. To learn more, see [Convert to DataPrime](https://coralogix.com/docs/user-guides/custom-dashboards/tutorials/query-builder/#convert-to-dataprime).

## Next steps

Learn how to [add monitoring data to custom dashboard widgets](https://coralogix.com/docs/user-guides/custom-dashboards/tutorials/add-monitoring-data-to-custom-dashboard-widgets/index.md).
