---
order: 2
navTitle: 表样和数据映射
---
# 表样和数据映射

报表填报应用常见的表样有固定表、浮动表这2种。固定表可以根据需要选择列表存储或行表存储的方式，而浮动表则仅适合于行表存储。报表填报应用可以根据表样及其对应的数据映射自动生成数据模型，具体说明可见文档[模型设计](https://docs.succapp.com/v5/app/model-design)；也可以根据需要选择引入外部模型创建表单。本文主要为大家讲解具体的表样及其对应的数据映射。

## 固定表{#fix-table}

固定表是指数据填报界面中只能在固定的单元格进行填报的一类表单。制作固定表时，需要在设计器页面完整地绘制出行列内容以及需要填写的单元格，在绘制过程中能够灵活的的调整表格样式。固定表可以根据需要进行列表存储或者行表存储，具体说明见下方章节。

### 列表存储{#line-table}

列表存储是指数据是通过列来扩展的，增加一个指标，数据库表中新增一列。固定表默认按照列表存储。以下方的车辆销售详情为例，每种车型需要填写四个销售指标，表样中有3种车型。这些指标会被存储为数据库表中的一行数据，总共有12个字段。

![固定表及其映射](./images/2024-06-13-17-56-23.png)

::: tip
需注意本文中所有数据映射关系图中均省略了[数据期](../settings/period.md)和[填报单位](../settings/org.md)两个字段，实际使用时需要酌情添加。
:::

### 行表存储{#row-table}

行表存储即数据是通过增加行来扩展的，新增一个维项，数据库表中新增一行数据。固定表想要实现行表存储，需进行[行存储设置](#row-condition)。报表填报应用会将行存储条件所在的一行、一列或者一系列类别的数据存储为一行，若多个行存储条件之间存在交叉的情况，则以and的关系进行存储，在数据模型上体现为多个维项同为主键标识一条数据。具体的数据映射关系如下：

![行表及其映射](./images/2024-06-17-14-16-08.png)

#### 行存储设置{#row-condition}

行存储的设置可以控制当前的指标属于哪个维度，即哪一行数据，是实现固定表按行存储的关键步骤。在设计器界面勾选**行表存储**后，可设置**行表条件**，行表条件可控制指标所属的维度。行表存储通常会搭配**条件**区域使用。设置行存储有直接引用维成员、手动设置行存储两种方式。

##### 直接引用维成员 {#auto}

直接引用维成员适用于数据模型中的维度有关联维表且为主键的情况。比如资产负债表中，【项目】字段已关联了资产项目表且该字段为主键，在制作该表时，就可以直接引用项目的维成员。具体步骤如下：

![维成员](./images/2024-06-05-18-03-33.gif)

1. 查看维成员：查看维成员有两种方式。
   - 直接右键数据模型的维项，选择【显示维成员】。
   - 在工具栏上的**条件**下拉选择**批量添加条件**，选择对应的数据模型及维项。
2. 引用维成员：引用维成员的方式有如下三种，任意选择即可。引用了维成员的单元格会自动勾选上【行表存储】属性，并生成对应维项的行表条件，如`资产负债表.项目='010100'`。同时单元格会自动框选一个条件区域，该条件区域均会受行表条件控制，且条件区域支持手动调整。
   - 单选拖拽：鼠标点击维成员拖拽至单元格中。
   - 多选拖拽：多选维成员，并拖拽至单元格中，即可实现批量引用维成员。多选引用维成员时，系统会根据拖入的维成员个数自动扩充行。
   - 双击：选中单元格，双击维项即可引用维成员，成功后选中单元格自动往下，可再次双击设置下一个单元格。但该行为只会在已有单元格上执行，不会自动扩充行。

::: tip
在拖入维成员至空白单元格时，维项名称将自动填充至空白单元格；若单元格已有内容，拖入维成员时，单元格内容不变仅增加行存储设置。
:::

##### 手动设置行存储 {#manual}

手动设置行存储常用于数据模型中的维度未关联维表或需要设置动态行表条件的情况，如年报中填报产品每月的销量。这里月份不会关联维表，需手动设置行存储条件。

![手动设置行存储](./images/2024-06-05-17-45-36.png)

1. 手动设置条件范围：选中单元格，点击标签栏上的【条件】，并调整好条件范围。
2. 设置行存储：选中主条件单元格，在【属性栏】-【单元格】-【数据】属性处勾选**行表存储**，并设置好行表条件，所在条件区域的单元格均受该条件影响。比如设置行表条件为`年月 = 当前数据期 + '02'`，即整个条件区域的数据均为当前数据期2月份的数据。

## 浮动表{#float-table}

浮动表是指数据填报界面能够动态增加数据的一类表样。浮动表可以采用不同的浮动形式，包括横向浮动、纵向浮动和交叉浮动等类型，以满足不同数据录入和展示需求。浮动表仅适合于行表存储，[浮动](../float-submit/README.md)的设置可以让用户在填报界面动态新增数据，且能够将数据按行存储。以下方各车型销售明细表为例，每行代表一种车型的销量详情，由于数据在填报界面可以动态添加，所以数据对应存储为n行+5个字段，具体如下图：

![浮动表及其映射](./images/2024-06-17-14-11-00.png)

::: tip
浮动表在设计器界面仅制作布局与结构，不展示完整的数据，因此浮动表相比固定表而言，对表样的调整有一定的局限性。
:::

## 注意事项{#scene}

### 引入外部模型实现数据映射{#note}

引入外部模型来实现数据映射时，创建的外部模型需要注意以下内容：

![数据模型](./images/2024-06-05-10-23-46.png)

- **数据期**：主键，若表单为[实时填报](../settings/period.md#realtime-report)则不需要该字段。该字段需根据表单的[填报周期](../settings/period.md#fixed-period)设置好对应的字段角色。比如报表填报应用为年报，每年填写一次，则需要设置数据期的字段角色为【年】。
- **填报单位**：主键，若报表填报应用不涉及到填报单位则不需要该字段。该字段需根据表单的[填报单位](../settings/org.md)绑定对应的维表。
- **维度**：报表填报应用中需要的维度信息。根据使用场景的不同维度存在以下两种情况。
  - 若某维度是标识一行数据的关键字段，必须设置为主键，且若需要使用其维成员，需提前绑定好维表。如资产负债表中的【项目】字段。
  - 若某维度仅用于存储基本的维度信息，无需设置为主键。根据需要设置好对应的字段长度等内容即可。
- **度量**：报表填报应用中需要的度量信息。根据需要设置好对应的字段长度等内容。
