---
source_url: https://docs.dolphindb.cn/zh/funcs/p/panel.html
fetched_at: 2026-05-19T09:33:47Z
category: funcs
title: panel
sha1: e80d5870f0c383b9fd332be8f0e0bb7c351a5360
---

# panel

## 语法

`panel(row, col, metrics, [rowLabel], [colLabel], [parallel=false])`

## 详情

将指标列按给定行与列维度进行透视操作，生成一个或多个矩阵。每一个矩阵对应一个指标列（metrics）。

`panel` 函数同 [pivotBy](../../progr/sql/pivotBy.html)
语句类似，将数据表中的数据按照两个维度重新排列。两者的不同之处在于，SQL 中，exec... pivot by... 只能指定一个指标列， 生成一个矩阵，而
`panel` 函数可以指定一个或多个指标列，生成一个或多个矩阵。

## 参数

**row** 是一个向量，其中每个元素对应结果矩阵中的一行。

**col** 是一个向量，其中每个元素对应结果矩阵中的一列。

**metrics** 是一个或多个指标列。每个指标列产生一个矩阵。

**rowLabel** 是一个向量，为结果矩阵的行标签。必须升序排列，而且没有重复值。结果中仅包括 *rowLabel* 中指定的行。

**colLabel** 是一个向量，为结果矩阵的列标签。必须升序排列，而且没有重复值。结果中仅包括 *colLabel* 中指定的列。

**parallel** 是一个布尔值，表示是否并行计算。默认值为 false。

## 返回值

一个或多个矩阵。

## 例子

```dolphindb
t = table(1 1 2 2 2 3 3 as id, 2020.09.01 + 1 3 1 2 3 2 3 as date, 1..7 as value);
t;
```

| id | date | value |
| --- | --- | --- |
| 1 | 2020.09.02 | 1 |
| 1 | 2020.09.04 | 2 |
| 2 | 2020.09.02 | 3 |
| 2 | 2020.09.03 | 4 |
| 2 | 2020.09.04 | 5 |
| 3 | 2020.09.03 | 6 |
| 3 | 2020.09.04 | 7 |

`panel` 面板数据生成的表中，指定的 *row* 和 *col*
会自动按升序排序。

```dolphindb
panel(row=t.date, col=t.id, metrics=t.value);
```

|  | 1 | 2 | 3 |
| --- | --- | --- | --- |
| 2020.09.02 | 1 | 3 |  |
| 2020.09.03 |  | 4 | 6 |
| 2020.09.04 | 2 | 5 | 7 |

```dolphindb
panel(row=t.date, col=t.id, metrics=t.value, rowLabel=2020.09.02 2020.09.03, colLabel=1 2);
```

|  | 1 | 2 |
| --- | --- | --- |
| 2020.09.02 | 1 | 3 |
| 2020.09.03 |  | 4 |

```dolphindb
panel(row=t.date, col=t.id, metrics=[t.value, t.value>0], rowLabel=2020.09.02 2020.09.03, colLabel=1 2);
```

|  | 1 | 2 |
| --- | --- | --- |
| 2020.09.02 | 1 | 3 |
| 2020.09.03 |  | 4 |

|  | 1 | 2 |
| --- | --- | --- |
| 2020.09.02 | 1 | 1 |
| 2020.09.03 |  | 1 |

利用`panel` 生成的矩阵，计算每只股票的累积最大股价。

```dolphindb
syms = "sym"+string(1..2)
dates = 2021.12.07..2021.12.11
t = table(loop(take{, size(syms)}, dates).flatten() as trade_date,  take(syms, size(syms)*size(dates)) as code, rand(1000, (size(syms)*size(dates))) as volume)
volume = panel(row=t.trade_date, col=t.code, metrics=t.volume, rowLabel=dates)
cummax(volume)
```
