Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
144 changes: 131 additions & 13 deletions content/en/sheets/_index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
title: Sheets
description: "Analyze Datadog data in a familiar spreadsheet interface with pivot tables, lookups, calculated columns, and complex analysis tools."
description: "Analyze Datadog data in a familiar spreadsheet interface with tables, pivot tables, lookups, calculated columns, and flexible spreadsheets."
further_reading:
- link: "/sheets/functions_operators"
tag: "Documentation"
Expand All @@ -10,23 +10,23 @@ further_reading:
text: "Explore your data with Sheets, DDSQL Editor, and Notebooks for advanced analysis in Datadog"
---

{{< callout url="https://www.datadoghq.com/product-preview/flexible-spreadsheets-in-datadog-sheets/">}}
Create flexible spreadsheets: built to let you start from scratch, build models, track operations, and more.
{{< /callout >}}

## Overview

Sheets is a spreadsheet tool that you can populate with Datadog data, enabling you to perform complex analysis and build reports without requiring technical expertise. It allows teams to use familiar spreadsheet functions like lookups, pivot tables, and calculations on Datadog data, so you don't have to export and use another tool with stale data.

Sheets lets you manipulate, transform, and analyze data from logs, real user monitoring, and cloud cost monitoring in a familiar spreadsheet interface.
Sheets lets you manipulate, transform, and analyze data from logs, real user monitoring, and cloud cost monitoring in a familiar spreadsheet interface. It can contain the following tabs:

- **[Table](#table)**: Query live data from a Datadog data source and enrich it with calculated columns, lookups, and filters.
- **[Pivot](#pivot)**: Summarize and aggregate data from a table with custom dimensions and calculations.
- **[Sheet](#sheet-preview)** (Preview): A flexible, blank-canvas spreadsheet where you can write formulas referencing data directly from a table to build models, reports, or track operations.

## Create a table
## Table

Start by creating a table of data, either by building a new query from Sheets or transferring a query from the logs explorer, RUM explorer or metrics explorer.
Start by creating a table of data, either by building a new query from Sheets or transferring a query from explorer pages, like Logs, RUM, Metrics, or Cloud Cost.

### Add a new table in Sheets

{{< img src="/sheets/create_table.png" alt="Modal to create to create a table from Sheets, showing a Logs query with status:error" style="width:90%;" >}}
{{< img src="/sheets/create_table.png" alt="Modal to create a table from Sheets, showing a Logs query with status:error" style="width:90%;" >}}

1. On the [Datadog Sheets page][1], click **New Spreadsheet**.
1. Click **Add Data**.<br/>
Expand All @@ -42,25 +42,25 @@ Start by creating a table of data, either by building a new query from Sheets or
1. You can create a **New Spreadsheet** or add this table of data to an **Existing Spreadsheet**.
1. Click **Save and Open**.

## Calculated columns
### Calculated columns

You can use a calculated column to add a formula, parse a log message, extract regex, or add business logic to your data. Your calculated columns can be used in the pivot table you'll create later.

From the header of the far right column of your table, click the Plus icon to **Add calculated column**. Enter a function to view the syntax and description of the function. For a full list of supported functions, see the [Functions and Operators][3] documentation.

{{< img src="/sheets/calculated_columns.png" alt="Added calculated column with the Plus icon, and an example IFS function" style="width:90%;" >}}

## Lookup
### Lookup

Lookup enriches your existing data and adds more context to your table. Click **Add Lookup** at the top of the page to add columns from another table or data source, such as [Reference Tables][4], logs, or RUM data. Lookup is like a left join or a vlookup in Excel or Google Sheets; it matches records on a common column, and returns additional columns of data to enrich your existing Sheets table.

{{< img src="/sheets/lookup.png" alt="Example Lookup which adds a user's team metadata sourced from a reference table" style="width:90%;" >}}

For example, you have a table of RUM data with user emails, and you want to know which teams these users belong to. You can add a lookup that compares the user email column in your table with the work email column in a Reference Table. Lookup pulls the team from the Reference Table and adds it as a new column to your spreadsheet.

## Pivot table
## Pivot

After you add a table of data to a spreadsheet, analyze and add context to your raw data with a Pivot table. Use pivot tables to summarize and organize large amounts of data into customized tables. It helps you analyze data to find patterns and trends, and see comparisons. For example, you can have a table with a hundred rows, but with a pivot table you can break down that data into a summary table that counts your data by method or region. To create a pivot table:
After you add a table of data to a spreadsheet, analyze and add context to your raw data with a pivot table. Use pivot tables to summarize and organize large amounts of data into customized tables. It helps you analyze data to find patterns and trends, and see comparisons. For example, you can have a table with a hundred rows, but with a pivot table you can break down that data into a summary table that counts your data by method or region. To create a pivot table:
1. From an existing spreadsheet that already has a table of data, click **Add Pivot Table**.
1. In the **Rows** and **Columns** section, select the dimensions you want to analyze, such as the status of logs.
1. In the **Calculations** section, select the dimensions you want to use in calculations, including sum, average, count, min, and max.
Expand All @@ -71,6 +71,123 @@ After you add a table of data to a spreadsheet, analyze and add context to your

After you have your pivot table, you can click **Show Graphs** and add up to six widgets to graph your data. Supported widget types include **Top List**, **Treemap**, and **Pie Chart** widgets. Hover over the widget title to delete, duplicate, expand, export, and reposition widgets. To edit a widget, click the pencil icon. Editing options allow you to select the widget type, choose which pivot calculation to graph (if there is more than one), and specify the rows, columns, and the number of groupings graphed per row or column.

## Sheet (Preview)

{{< callout url="https://www.datadoghq.com/product-preview/flexible-spreadsheets-in-datadog-sheets/">}}
Create flexible spreadsheets: built to let you start from scratch, build models, track operations, and more.
{{< /callout >}}

A sheet is a flexible, blank-canvas spreadsheet with a full formula engine. Use it to build financial models, operational trackers, planning templates, or any freeform calculation that doesn't fit a query-based workflow.

To add a sheet, click the **+** tab at the bottom of your spreadsheet and select **Add Sheet**.

{{< img src="/sheets/flexible_spreadsheet.png" alt="A flexible sheet showing a 2025 cloud spend by provider model, with SUMIFS and VLOOKUP formulas referencing Cloud cost and Currency conversion table tabs" style="width:90%;" >}}

### Cell references

Cells are referenced using standard A1 notation, where the column is a letter and the row is a number. For example, `A1` is the first cell, `B3` is the third row of column B, and `A1:C5` is a range spanning columns A through C and rows 1 through 5.

| Reference type | Syntax | Description |
| -------------- | ------ | ----------- |
| Relative cell | `A1` | Adjusts when the formula is copied to another cell |
| Absolute cell | `$A$1` | Always refers to the same cell |
| Absolute column, relative row | `$A1` | Column stays fixed; row adjusts |
| Relative column, absolute row | `A$1` | Row stays fixed; column adjusts |
| Range | `A1:C5` | All cells from A1 to C5 |

### Cross-sheet references

You can reference data from other tabs in the same spreadsheet directly in your formulas. Use the sheet name followed by an exclamation mark and the cell or range:

```
='My Table'!A1
='Summary'!B2:B20
```

To reference a specific column from a **table** tab by name, use `#` notation:

```
='Error Logs'#"duration_ms"
='Table 1'#"status"
```

For example, `=SUM('Error Logs'#"duration_ms")` sums every value in the `duration_ms` column of your Error Logs table.

### Formulas

Sheet formulas support all functions listed on the [Functions and Operators][3] page, plus additional lookup, statistical, financial, and other functions available only in sheets. See the [Sheet functions][21] section for the full list.

#### Examples

**Aggregate a table column in a sheet**

Sum all values in the `duration_ms` column of a table tab called "Error Logs":
```
=SUM('Error Logs'#"duration_ms")
```

Count how many rows in that table have `status = "error"`:
```
=COUNTIF('Error Logs'#"status","error")
```

**Safe lookup with a fallback**

Look up a user's team from a reference table, returning "unknown" if not found:
```
=IFNA(VLOOKUP(A2,'User Directory'!A:B,2,0),"unknown")
```

**Days since an incident**

Calculate how long ago an incident was opened, given a timestamp in A2:
```
=DATEDIF(A2,TODAY(),"D")&" days ago"
```

**p95 latency from a table**

Pull the 95th percentile of response times from a connected table:
```
=PERCENTILE('APM Data'#"duration",0.95)
```

**Classify a value into severity tiers**

```
=IFS(A2>500,"critical",A2>200,"warn",A2>0,"ok",TRUE,"no data")
```

**Monthly loan payment**

Calculate the monthly payment on a $50,000 loan at 6% annual interest over 3 years:
```
=PMT(0.06/12,36,-50000)
```

### Error values

| <span style="min-width:80px;display:block">Error</span> | Cause | How to handle |
| -------------------- | ----- | ------------- |
| `#DIV/0!` | Division by zero | `=IFERROR(A1/B1,0)` |
| `#VALUE!` | Wrong argument type, for example text passed to a math function | Check input types |
| `#NUM!` | Invalid numeric value, for example `SQRT(-1)` | Validate inputs with `IF` |
| `#N/A` | Value not found, for example a failed `VLOOKUP` | `=IFNA(VLOOKUP(...),"not found")` |
| `#REF!` | Reference to a cell that no longer exists | Update the formula |
| `#NAME?` | Unrecognized function name | Check spelling |
| `#ERROR!` | Formula could not be parsed | Check syntax |

### Cell formatting

Cells can be formatted as plain text, number, percentage, currency (USD or EUR), or datetime. Formatting affects how values are displayed but not the underlying value used in calculations.

### Limits

| Dimension | Default | Maximum |
| --------- | ------- | ------- |
| Rows | 1,000 | 2,000 |
| Columns | 26 | 52 |

## Supported data sources

{{< callout url="https://www.datadoghq.com/product-preview/additional-advanced-querying-data-sources/" header="Advanced Data Sources">}}
Expand Down Expand Up @@ -145,3 +262,4 @@ You must have edit access to restore general access to a restricted spreadsheet.
[18]: https://app.datadoghq.com/apm/traces
[19]: https://www.datadoghq.com/product-preview/additional-advanced-querying-data-sources/
[20]: https://app.datadoghq.com/product-analytics/events
[21]: /sheets/functions_operators#sheet-functions

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Fix broken anchor for Sheet functions link

The new reference target [21]: /sheets/functions_operators#sheet-functions points to an anchor that does not exist in functions_operators.md (that page has headings like ## Functions, but no ## Sheet functions). As a result, users clicking the “Sheet functions” link in the Sheets page cannot navigate to the intended section, which is a regression in cross-page docs navigation. Update the link to an existing anchor or add a matching heading on the destination page.

Useful? React with 👍 / 👎.

Loading
Loading