---
title: "table"
description: "Fields and display options of a `table` panel."
---

> Documentation Index
> Fetch the complete documentation index at: https://slashobserve.com/llms.txt
> Use this file to discover all available pages before exploring further.

# table

## Example

```json
{
  "id": "p_errlogs",
  "type": "table",
  "title": "Error logs by message (ClickHouse)",
  "gridPos": {
    "x": 0,
    "y": 8,
    "w": 24,
    "h": 8
  },
  "datasource": "ch",
  "queries": [
    {
      "query": "SELECT Body AS message, count() AS n FROM otel_logs WHERE ServiceName = 'checkout' AND SeverityText = 'ERROR' AND $__timeFilter(Timestamp) GROUP BY message ORDER BY n DESC LIMIT 20"
    }
  ]
}
```

From [`spec/examples/checkout-service-health.json`](https://github.com/slashobserve/slashobserve/blob/main/spec/examples/checkout-service-health.json).

## Fields

| Field | Type | Description |
| --- | --- | --- |
| `id` (required) | `string` | Stable across versions; comments anchor to it. |
| `title` (required) | `string` |   |
| `description` | `string` |   |
| `gridPos` (required) | `gridPos` | Position on the 24-column grid; x + w must not exceed 24. |
| `type` (required) | `"timeseries"`, `"stat"`, `"gauge"`, `"bargauge"`, `"table"`, `"piechart"`, `"heatmap"`, `"histogram"`, `"state-timeline"`, `"logs"`, `"barchart"`, `"status-history"`, `"trend"`, `"xychart"`, `"candlestick"`, `"nodeGraph"`, `"traces"`, `"flamegraph"`, `"geomap"`, `"canvas"`, `"alertlist"` |   |
| `datasource` | `datasourceRef` | A configured datasource uid, or ${name} naming a datasource variable declared in variables (before this variable, when used by one); queries then run on the datasource selected in that variable, and macros follow its datasourceType. |
| `queries` (required) | array of `panelQuery` or `expressionQuery` or `dashboardQuery` | At most 26 items. |
| `overrides` | array of [`override`](/docs/reference/observespec/overrides-and-mappings/#overrides) | At most 50 items. |
| `transform` | array of [`transform`](/docs/reference/observespec/transforms/) | At most 20 items. |
| `repeat` | `variableName` | Referenced in queries as $name, ${name} or ${name:format}. |
| `repeatDirection` | `"h"`, `"v"` |   |
| `maxPerRow` | `integer` | Between 1 and 24. |
| `timeFrom` | `string` |   |
| `timeShift` | `string` |   |
| `timezone` | `string` | browser, utc or an IANA zone such as Asia/Kolkata. The times this panel draws are shown in this zone instead of the dashboard's. |
| `hideTimeOverride` | `boolean` | Do not show the time override note (from timeFrom and timeShift) in the panel header. The override still applies to the queries. Absent means shown. |
| `interval` | `intervalRef` | A minimum step such as 30s, or ${name} naming an interval variable; queries then use the step selected in that variable. |
| `maxDataPoints` | `integer` | Between 10 and 11000. |
| `transparent` | `boolean` |   |
| `titleHidden` | `boolean` | Keep the title as the panel's name for menus and screen readers but do not show it. Absent means shown. |

Every data panel also takes the [field options](/docs/reference/observespec/field-options/).

## Display options

| Field | Values | Description |
| --- | --- | --- |
| `header` | `true`, `false` |   |
| `footer` | array of `reducer` | At most 5 items. |
| `footerFields` | array of `string` | Limits the footer to the columns with these field names; absent means every number column. At most 50 items. |
| `footerCountRows` | `true`, `false` | Adds a footer row with the number of rows. |
| `cellHeight` | `"sm"`, `"md"`, `"lg"`, `"auto"` | The height of a table row: sm is the compact row, md and lg add padding, and auto fits each row to its content up to maxRowHeight. |
| `maxRowHeight` | `integer` | The tallest a row may grow, in pixels, when cellHeight is auto or a cell has dynamicHeight. Between 20 and 1000. |
| `frameIndex` | `integer` | Shows only this frame when the data has several and no transform merges them (the last frame when the index is past it); absent shows every frame, one after another. Between 0 and 99. |
| `pagination` | `true`, `false` | Shows the rows in pages sized to the panel, with previous and next buttons. |
| `frozenColumns` | `integer` | The number of columns from the left that stay in view while the table scrolls sideways. Between 0 and 10. |
| `sortBy` | `string` | The name of the column the table starts sorted by. |
| `sortDesc` | `true`, `false` | Sorts the starting sort from the largest value down. |
| `typeIcons` | `true`, `false` | Shows an icon for the column type before each header. |

Generated from [`spec/schema/observespec.v0.json`](https://github.com/slashobserve/slashobserve/blob/bac0fe39/spec/schema/observespec.v0.json) at `bac0fe39`. [Report a problem](https://github.com/slashobserve/slashobserve/issues/new).
