# 控制用户能看到哪些行和列

> 与团队共享一张表，让每个人只能看到获准访问的行和列。

通过访问规则，与你共享表的所有人都在同一张表上工作，但每个人只能看到你允许他们查看的内容。你可以在表的共享面板中设置规则。

本页以销售数据库中的 **Deals** 表为例，其中包含 **Region**、**Rep**、**Amount** 和 **Margin** 列。每位销售代表应只能看到自己所在区域的交易，且只有 Finance 团队能看到 **Margin**。

## 访问规则如何生效

- **其他所有人的规则**适用于共享此表、但没有专属规则的所有人。如果未设置此规则，他们可以看到所有行和列。
- **个人、团队或工作区的规则**属于例外规则。有例外规则的用户会按例外规则访问，而不是按其他所有人的规则访问。
- **多个例外规则会合并生效。**如果某人适用多个例外规则，他们可以看到各条规则允许的行，但看不到任一规则隐藏的列。
- **表的所有者始终可以看到全部内容。**规则适用于共享此表的其他所有人，包括管理员。

规则属于表。与某人共享表或移除其访问权限，都不会添加或删除规则。

## 开始之前

- 你需要使用 Enterprise 套餐才能创建或更改规则。
- 表的所有者和工作区管理员负责管理表的规则。
- 先共享表：从表所在的数据库页面打开表，然后选择**共享**。规则适用于拥有此表访问权限的人。

## 设置其他所有人的规则

在此示例中，每位销售代表只能看到自己所在区域的交易，且所有人都看不到 **Margin**。

1. 打开表，选择**共享**，然后选择**有访问权限的人**。
2. 在**其他所有人**旁边，选择**行和列…**。
3. 在**行**下，选择**仅显示符合条件的行…**。
4. 选择一个**列**（**Region**）和一个**条件**（**等于**）。
5. 选择**成员属性**，然后选择**属性**（`region`）。如果要改为与固定值比较，请选择**值**并输入该值。
6. 在**隐藏的列**下，选中 **Margin**。
7. 选择**保存**。

如果规则缩小了没有专属规则的用户能看到的范围，Dvina 会先请你确认，并告知受影响的人或团队数量。

在**行**下，你也可以选择**所有行**，或选择**不显示任何行**，让此规则不显示任何行。

> [!TIP]
> 条件会按适合列类型的方式进行比较：文本列可以使用**等于**、**不等于**、**包含**或**不包含**，数字列可以与某个值比较大小，日期列可以判断日期是否在某个日期之前、之后或两个日期之间。任何列都可以有值或为空。

## 为个人或团队添加例外规则

Finance 团队应能看到所有交易，包括 **Margin**。

1. 在**有访问权限的人**中，找到 Finance 团队。打开其旁边显示角色的菜单，例如**可查看**。
2. 选择**行和列…**。
3. 在**行**下，选择**所有行**，并确保**隐藏的列**下的所有列均未选中。
4. 选择**保存**。

**有访问权限的人**中的每一项都会显示该个人或团队能看到的内容，例如**所有行**或**部分行，1 列已隐藏**。如果两条例外规则隐藏了不同的列，Dvina 会提醒你：同时适用这两条规则的用户，看不到任何一条规则隐藏的列。

工作区规则适用于其中的所有成员，并与各成员自己的规则一同生效，因此两类规则允许查看的行会合并。

## 为成员设置属性

将列与成员属性进行比较的规则，会向每位成员显示与其属性值匹配的行。在这个示例中，`region` 为 West 的销售代表只能看到 West 的交易。成员属性需要 Enterprise 套餐，由管理员设置。

1. 在设置 › **人员**中，选择**成员属性**。
2. 输入一个**新属性**，例如 `region`，然后选择**添加**。使用小写字母、数字和下划线，并以字母开头。
3. 在**人员**中，打开成员的角色菜单，然后选择**成员属性**。
4. 输入该成员的属性值，例如 `West`。多个值之间用逗号分隔，例如 `West, Central`，以显示与各个值匹配的行。
5. 选择**保存**。

使用 SCIM 时，`department`、`cost_center`、`division`、`organization`、`employee_number`、`title` 和 `user_type` 来自你的身份提供商。

> [!IMPORTANT]
> 如果成员的某个属性尚未设置，将列与该属性进行比较的规则不会向其显示任何行。该成员会看到**受限视图**，以及请管理员设置该属性的提示。移除属性后，与该属性进行比较的访问规则将不再匹配任何成员。

## 成员会看到什么

规则适用于所有查询该表的场景：聊天中的回答、卡片、卡片导出和洞察。

- 如果规则限制了你能看到的卡片或洞察内容，它们会标有**受限视图**。
- 对某位成员隐藏的列，完全不会向其显示。如果该成员请求查询这列，查询会被拒绝，就像这列不存在一样。
- 如果规则不允许某位成员查看任何行，Dvina 不会查询数据库。
- 当 Dvina 向受规则限制的成员描述表时，会省略隐藏的列，以及根据该成员可能无法查看的行生成的描述。
- 在数据库页面上，设有访问规则的表会显示**受限视图**。

### 共享的洞察和聊天

- 受规则限制的成员打开共享洞察时，看到的是自己有权查看的结果，而不是你的结果。
- 当你共享聊天、任务或对话串，且其中的卡片会查询某个表时，Dvina 会列出因规则而只能查看部分内容的成员。这些成员的卡片会按其访问权限显示数据，但回答文本中的数字仍与你看到的一致。

## 查看谁查询过表

对设有访问规则的表进行的每次查询，以及被共享该表的成员发起的每次查询，都会记录在审计日志中。

1. 在**有访问权限的人员**中，选择**谁查询过此表**。
2. 选择一条记录，查看查询的**时间**、**查询者**、返回的**行数**和查询的**来源**：**聊天**、**卡片**、**洞察**或**其他**。

管理员也可以在设置 › **审计日志**的**表**下找到这些事件。查看谁查询过表需要 Enterprise 套餐。

## 删除规则

1. 从**有访问权限的人员**中打开规则。
2. 选择**删除规则**。如果删除规则会让某些成员看到更多内容，Dvina 会先询问你，并说明涉及哪些成员；选择**删除规则**以确认。

## 套餐

Enterprise 套餐提供规则的创建和修改、成员属性以及**谁查询过此表**功能。已保存的规则在任何套餐下都会继续生效，你仍可查看和删除这些规则。

## 相关内容

- [数据库和数据仓库](/docs/connectors/databases)
- [成员和角色](/docs/teams/members-and-roles)
- [使用审计日志](/docs/teams/audit-log)
- [共享](/docs/use-dvina/features/sharing)
