[TITLE]
Odoo 动态数据透视表使用指南:创建、编辑与操作技巧

[DESCRIPTION]
本文详细介绍 Odoo 中动态数据透视表的概念、如何从静态透视表创建动态透视表、函数使用以及维度、度量的编辑操作,帮助用户实现灵活的数据分析。

[KEYWORDS]
Odoo, 动态数据透视表, 静态数据透视表, 创建, 编辑, 维度, 度量, 计算度量, 表格函数, 数据分析

[TRANSLATED_CONTENT]

---
# 动态数据透视表

当将 Odoo 数据库中的透视视图插入到电子表格时,默认是 **静态数据透视表**。静态数据透视表中的每个单元格都包含一个 `Odoo 特定函数 <spreadsheet/insert/pivot-table-functions-static>`,用于从数据库检索数据。

![静态数据透视表单元格函数](dynamic_pivot_tables/pivot-function-static.png)

当数据库中对应的数据发生变化(例如某个季度或某位业务员的销售额),静态数据透视表的单元格会随之更新。

但静态数据透视表 **不会自动扩展** 以容纳新数据,例如新季度的销售或新入职业务员的数据。也无法通过透视表属性添加或操作维度(列/行)或度量。

:::: note
::: title
注意
:::

如果尝试更新或操作刚插入电子表格的透视表属性,屏幕右上角会出现错误提示:

![尝试操作静态数据透视表时的错误信息](dynamic_pivot_tables/pivot-table-error.png)
::::

为了在操作透视表时拥有更大的灵活性,你可以 **从静态透视表创建动态透视表** `<spreadsheet/dynamic-pivot-tables/create>`
## 创建动态数据透视表 {#spreadsheet/dynamic-pivot-tables/create}

从静态透视表生成动态透视表的主要方式有两种:

- **通过透视表属性复制静态透视表**  
  打开 `透视表属性 <spreadsheet/insert/pivot-table-properties>`,点击右上角的 `fa-cog`(齿轮)图标,然后点击 `fa-clone` **Duplicate**(复制)。

  系统会创建一个新的数据源,并在新工作表中插入动态透视表。动态透视表的样式与原始透视表保持一致。

  :::: note
  ::: title
  注意
  :::

  使用此方法时,新的动态透视表会获得下一个可用的透视表 ID。这意味着可以为同一模型创建多个透视视图,且每个视图拥有独立的设置、分组或计算方式。
  ::::
  
- **通过 “数据” 菜单重新插入动态透视表**  
  在包含静态透视表的工作表中,将光标放在空白单元格上。点击 `Data --> os-insert-pivot Re-insert dynamic pivot`,随后在弹出的列表中选择相应的透视表。

  系统会生成一个新的动态透视表,样式同原始透视表。

  :::: note
  ::: title
  注意
  :::

  使用此方法时,静态与动态透视表共享同一数据源,因而拥有相同的透视表 ID。为免混淆,建议删除原来的静态透视表。
  ::::

:::: tip
::: title
技巧
:::

也可以直接在空白单元格中输入 **动态透视表函数** `<spreadsheet/dynamic-pivot-tables/functions>`。不过此方式需要手动重新套用表格样式。
::::

### 动态数据透视表函数 {#spreadsheet/dynamic-pivot-tables/functions}

与静态透视表中每个单元格都包含独立函数不同,动态透视表只使用 **单一函数**
```text
=PIVOT(pivot_id, [row_count], [include_total], [include_column_titles], [column_count])

函数参数说明:

  • pivot_id:插入透视表时系统分配的 ID。第一个透视表的 ID 为 1,第二个为 2,依此类推。
  • [row_count][column_count]:分别指定返回的行数和列数。
  • [include_total][include_column_titles]:设为 0 时可去除总计行/列标题。

该函数为 数组函数,能够自动扩展以容纳返回结果。

左上角单元格显示可编辑的函数,其余单元格则以灰色显示同一公式。

:::: tip ::: title 技巧 :::

如需去除总计或列标题,可在公式栏或左上角单元格中编辑函数。将光标定位在 pivot_id 后,输入 , 跳转到可选字段,然后填写 0 即可。例如在 [include_total] 中输入 0,即可同时去除行总计和列总计。

::::

要编辑动态透视表的数据,打开透视表属性 <spreadsheet/insert/pivot-table-properties>

点击 fa-cog(齿轮)图标后,可使用以下功能:

  • fa-exchange 翻转轴:将列维度切换到行,行维度切换到列。

    :::: tip ::: title 提示 :::

    翻转轴可以从不同视角审视数据,可能发现新洞见。但在数据量大时,可能出现 #SPILL 错误(公式输出范围被其他内容阻挡)。将鼠标悬停在 #SPILL 单元格上可查看错误详情。 ::::

  • fa-clone 复制:复制当前动态透视表并创建拥有独立属性的新数据源。

  • fa-trash 删除:删除动态透视表的数据源。

    :::: note ::: title 注意 :::

    删除数据源仅会移除后台数据链接,表格本身仍保留在工作表中。若需彻底删除,请使用键盘快捷键、菜单或直接删除所在工作表。 ::::

维度决定数据的分组方式,显示在 区域,顺序与数据库中透视视图的布局保持一致。

可进行的操作:

  • 点击 Add 添加新维度。
  • 在对应维度上点击 fa-trash(删除)图标以移除。
  • 拖拽维度在 区域内重新排序。
  • 将维度从 拖到 (或反向)以切换轴向。
  • Order by 下拉框中选择 AscendingDescendingUnsorted 以改变值的排序方式。
  • 对于日期/时间维度,可在 Granularity 中选择所需的粒度(年、月、日等)。

度量是你在透视表中衡量或分析的数值,顺序同数据库透视视图中的显示顺序。

可进行的操作:

  • 点击 Add 添加新度量(包括 计算度量 <spreadsheet/dynamic-pivot-tables/manipulate-measures-calculated-measures>)。
  • 使用 fa-eye(隐藏)或 fa-eye-slash(显示)切换度量可见性,或点击 fa-trash 删除。
  • 点击度量名称即可编辑其显示名称。
  • 拖拽度量以改变显示顺序。
  • 点击 fa-cog(齿轮)图标,可在下拉菜单中选择 % of grand totalRank smallest to largest 等显示方式,数据会即时更新。
  • Aggregation 中选择 SumAverageMinimum 等聚合方式。

:::: tip ::: title 技巧 :::

若需按特定维度的度量值对整张透视表进行排序,右键任意单元格 → os-sort-range Sort pivot → 选择 AscendingDescending。若想恢复默认顺序,选择 No sorting 即可。 ::::

当原始透视视图中没有所需度量时,可自行添加 计算度量(例如“每笔订单的平均收入”或“每件商品的利润率”)。

添加步骤:

  1. Measures 区域点击 Add

  2. 在可滚动列表底部,点击 os-formula Add calculated measure

  3. 点击度量名称并重新命名。

  4. 在以 [=] 开头的行输入公式。

    ::: example 示例:将销售总额除以订单数量,得到“每笔订单的平均收入”。

    :::

  5. 在下拉框中选择该度量的聚合方式。

:::: tip ::: title 技巧 :::

如果想保留查看单元格背后函数的能力(静态透视表的优势),可以选中动态透视表的相应区域,复制后粘贴到空白区域。点击粘贴后的任意单元格,即可看到用于获取数据的 Odoo 函数 <spreadsheet/functions/odoo>。 ::::


[SUMMARY]  
```markdown
# 动态数据透视表
## 静态数据透视表概述
## 创建动态数据透视表
### 通过属性复制
### 通过数据菜单重新插入
## 动态数据透视表函数
## 操作动态数据透视表
### 翻转轴
### 复制
### 删除
### 维度管理
#### 添加维度
#### 删除维度
#### 拖拽排序
#### 轴向切换
#### 排序方式
#### 粒度设置
### 度量管理
#### 添加度量
#### 添加计算度量
#### 隐藏/显示
#### 删除
#### 编辑名称
#### 拖拽排序
#### 显示方式
#### 聚合方式
#### 按度量排序