在数据行级别限制访问权限

通过将工作簿发布到 Tableau Server 或 Tableau Online 以与其他人共享工作簿时,默认情况下,所有有权访问工作簿的用户都可以查看视图中显示的所有数据。通过应用某种类型的筛选器,以允许您指定任何登录到服务器的给定人员可以在视图中查看的数据“行”,您可以覆盖此行为。

这种在行级别保护数据安全的方法适用于包含实时连接的数据源,以及其表以多个表形式存储的数据提取数据源。有关使用多个表存储数据提取数据的详细信息,请参见(可选)配置以下一项或多项选项来指示 Tableau 如何存储、定义筛选器并限制数据提取中的数据量:决定应以何种方式存储数据提取数据您可以选择让 Tableau 使用两种结构(架构)之一将数据存储在数据提取中:单个表(非标准化架构)或多个表(标准化架构)。所选的选项取决于您的需求。单个表:如果要使用其他数据提取属性(如数据提取筛选器、聚合等)限制数据提取中的数据量,并且您的数据使用直通函数 (RAWSQL) 时,请选择“单个表”。这是 Tableau 用于存储数据提取数据的默认结构。如果在数据提取包含联接时使用此选项,则会在创建数据提取时应用联接。多个表:如果您的数据提取由使用一个或多个等值联接合并的表组成,并且满足下面列出的使用“多个表”选项的条件,请选择“多个表”。如果使用此选项,则会在查询时执行联接。此选项能够潜在地提升性能和减小数据提取文件的大小。有关 Tableau 如何建议您使用“多个表”选项的详细信息,请参见关于使用“多个表”选项的提示。在某些情况下,您也可以使用此选项作为行级安全性的解决方法。有关使用 Tableau 的行级安全性的详细信息,请参见在数据行级别限制访问权限。使用“多个表”选项的条件若要使用“多个表”选项存储数据提取,数据提取中的数据必须满足下面列出的所有条件。表之间的所有联接均为等值 (=) 联接联接列的数据类型完全相同未使用直通函数 (RAWSQL)未配置增量刷新未配置数据提取筛选器未配置“前 N 个”或抽样如果以“多个表”方式存储数据提取,则无法向其附加数据。注意:“单个表”和“多个表”选项都只会影响数据提取中数据的存储方式。这些选项不影响数据提取中的表在“数据源”页面上的显示方式。例如,假设您的数据提取由三个表组成。如果直接打开配置为使用默认选项“单个表”的数据提取 (.hyper) 文件,您将看到列在“数据源”页面上的一个表。但是,如果打开使用打包数据源 (.tdsx) 文件的数据提取或包含其对应数据提取 (.hyper) 文件的数据源 (.tdsx) 文件,您将在“数据源”页面上看到包含数据提取的全部三个表。确定要提取多少数据 单击“添加”定义一个或多个筛选器,以限制基于字段及字段值提取的数据量。对数据提取中的数据进行聚合 选择“聚合可视维度的数据”以使用度量的默认聚合来聚合度量。对数据进行聚合可以合并行,并且可以最大限度地减少数据提取文件的大小并提高性能。选择对数据进行聚合时,也可以选择按指定的日期级别(例如“年”、“月”等)来“汇总日期”。下面的示例说明了如何为您可以选择的每个聚合选项提取数据。原始数据每个记录都显示为一个单独行。数据中共有 7 行。聚合可视维度的数据(无汇总)具有相同日期和地区的记录已聚合到一行中。数据提取中共有 5 行。聚合可视维度的数据(按“月”汇总日期)日期已按“月”级别进行汇总,并且具有相同地区的记录已聚合到一行中。数据提取中共有 3 行。选择要提取的行选择要提取的行数。可以提取所有行或前 N 行。Tableau 首先会应用筛选器和聚合,然后从经过筛选和聚合的结果中提取行数。行数选项取决于要从中进行提取的数据源的类型。注意:并非所有数据源都支持抽样。因此,您在“提取数据”对话框中可能看不到“抽样”选项。数据提取中将不包括您最初在“数据源”页面或工作表标签页中隐藏的任何字段。单击“隐藏所有未使用的字段”按钮可将这些隐藏字段从数据提取中移除。

基于用户的筛选的工作原理

假设您为不同地理区域内若干年中的一组产品创建了季度销售报告。

当您发布此报告时,您希望允许每个区域经理仅查看与其区域相关的数据。您可以应用用户筛选器,以根据用户的特征(例如其角色)限制对数据的访问,而不是为每个经理创建单独的视图。

以这种方式限制对数据的访问称为行级安全性 (RLS)。Tableau 提供以下行级安全性方法:

  • 创建用户筛选器并将用户手动映射到值

    这种方法较为方便,但维护费用高并且安全性可能不确定。必须按工作簿完成此方法,并且您必须更新筛选器并在用户群发生变化时重新发布数据源。

  • 使用数据中的安全字段创建动态筛选器

    使用此方法,您可以创建计算字段,以自动执行将用户映射到数据值这一过程。此方法要求基础数据包括要用于筛选的安全信息。

    执行此操作的最常见的方法是使用包含此信息的引用(“look-up”、“entitlements”或“security”)表。举例来说,如果要筛选视图以便只有主管才能看到它,则基础数据必须设置为包括用户名并指定每个用户的角色。

    由于筛选是在数据级别定义的,并由计算字段自动进行,因此此方法比将用户手动映射到数据值更安全。

向数据源添加用户筛选器

上一节中的两种方法介绍了向嵌入在工作簿中的数据添加筛选器的方法。如果多个工作簿连接到相同的数据,而不是在每个工作簿上使用筛选器,则可以筛选数据源,然后在发布数据源后将工作簿连接到该数据源。

连接到筛选的数据源的工作簿仅显示允许登录到服务器的用户查看的数据。此外,所有连接的工作簿都会在发生数据刷新时显示数据刷新。

具有用户筛选器的数据提取与实时连接

通常,在使用上述方法之一时,与包含使用实时连接的数据源的 RLS 相比,包含数据提取的 RLS 的创建速度更快,并且性能更佳。

针对包含数据提取数据源的 RLS 的要求

如前所述,针对使用包含数据提取的 RLS 的第一个要求是,数据提取中的数据应使用多个表存储。通过执行(可选)配置以下一项或多项选项来指示 Tableau 如何存储、定义筛选器并限制数据提取中的数据量:决定应以何种方式存储数据提取数据您可以选择让 Tableau 使用两种结构(架构)之一将数据存储在数据提取中:单个表(非标准化架构)或多个表(标准化架构)。所选的选项取决于您的需求。单个表:如果要使用其他数据提取属性(如数据提取筛选器、聚合等)限制数据提取中的数据量,并且您的数据使用直通函数 (RAWSQL) 时,请选择“单个表”。这是 Tableau 用于存储数据提取数据的默认结构。如果在数据提取包含联接时使用此选项,则会在创建数据提取时应用联接。多个表:如果您的数据提取由使用一个或多个等值联接合并的表组成,并且满足下面列出的使用“多个表”选项的条件,请选择“多个表”。如果使用此选项,则会在查询时执行联接。此选项能够潜在地提升性能和减小数据提取文件的大小。有关 Tableau 如何建议您使用“多个表”选项的详细信息,请参见关于使用“多个表”选项的提示。在某些情况下,您也可以使用此选项作为行级安全性的解决方法。有关使用 Tableau 的行级安全性的详细信息,请参见在数据行级别限制访问权限。使用“多个表”选项的条件若要使用“多个表”选项存储数据提取,数据提取中的数据必须满足下面列出的所有条件。表之间的所有联接均为等值 (=) 联接联接列的数据类型完全相同未使用直通函数 (RAWSQL)未配置增量刷新未配置数据提取筛选器未配置“前 N 个”或抽样如果以“多个表”方式存储数据提取,则无法向其附加数据。注意:“单个表”和“多个表”选项都只会影响数据提取中数据的存储方式。这些选项不影响数据提取中的表在“数据源”页面上的显示方式。例如,假设您的数据提取由三个表组成。如果直接打开配置为使用默认选项“单个表”的数据提取 (.hyper) 文件,您将看到列在“数据源”页面上的一个表。但是,如果打开使用打包数据源 (.tdsx) 文件的数据提取或包含其对应数据提取 (.hyper) 文件的数据源 (.tdsx) 文件,您将在“数据源”页面上看到包含数据提取的全部三个表。确定要提取多少数据 单击“添加”定义一个或多个筛选器,以限制基于字段及字段值提取的数据量。对数据提取中的数据进行聚合 选择“聚合可视维度的数据”以使用度量的默认聚合来聚合度量。对数据进行聚合可以合并行,并且可以最大限度地减少数据提取文件的大小并提高性能。选择对数据进行聚合时,也可以选择按指定的日期级别(例如“年”、“月”等)来“汇总日期”。下面的示例说明了如何为您可以选择的每个聚合选项提取数据。原始数据每个记录都显示为一个单独行。数据中共有 7 行。聚合可视维度的数据(无汇总)具有相同日期和地区的记录已聚合到一行中。数据提取中共有 5 行。聚合可视维度的数据(按“月”汇总日期)日期已按“月”级别进行汇总,并且具有相同地区的记录已聚合到一行中。数据提取中共有 3 行。选择要提取的行选择要提取的行数。可以提取所有行或前 N 行。Tableau 首先会应用筛选器和聚合,然后从经过筛选和聚合的结果中提取行数。行数选项取决于要从中进行提取的数据源的类型。注意:并非所有数据源都支持抽样。因此,您在“提取数据”对话框中可能看不到“抽样”选项。数据提取中将不包括您最初在“数据源”页面或工作表标签页中隐藏的任何字段。单击“隐藏所有未使用的字段”按钮可将这些隐藏字段从数据提取中移除。中的步骤,您可以将数据提取配置为使用多个表存储其数据。

除了上面的要求外,如果打算使用包含数据提取的 RLS,还有一些额外的事项需要注意。由于使用多个表存储的数据提取数据不支持数据提取筛选器和某些其他可帮助减少数据提取中的数据量的功能,因此,您必须考虑使用以下建议之一:

  • 使用自定义 SQL 连接到数据

  • 连接到已经有适当筛选级别的数据库视图

有关这些建议的详细信息,请参见使用“多个表”选项时的替代筛选建议

针对包含数据提取数据源的 RLS 的建议做法

为了高效地执行包含数据提取的 RLS,Tableau 建议将数据提取中的表(或者数据库视图或自定义 SQL 查询)的数量保持为两个。换句话说,Tableau 建议数据提取中的表由以下类型的表组成:

  • 数据表 — 这是包含要显示的所有数据的“object”表。

  • 引用表 — 这是包含用户信息和用户所属的安全组的“look-up”或“entitlements”表。

通过将数据提取中的表减少到只包含这两个表,您可以确保 Tableau 仅必须在这两个表之间执行联接,因此可避免出现任何数据重复情况或“联接爆炸”。

关于 RLS 和以前版本的 Tableau

在以前,Tableau 由于行重复和性能方面的复杂性而无法支持包含数据提取的 RLS 工作流。归根结底,这些复杂情况是其数据只能以单个表形式存储或查询的数据提取所导致的。不过,从 Tableau 2018.3 开始,您可以选择使用多个表来存储数据提取中的数据,从而为包含数据提取 RLS 实现了一个以前只能为包含实时连接的数据源实现的工作流。

有关 Tableau 中包含数据提取的 RLS 的全面论述,请阅读由在此领域拥有丰富经验的一位 Tableau 销售顾问维护的博客。

免责声明: 单击这些链接将离开 Tableau.com。尽管我们尽最大努力确保外部网站的链接保持正确并相关,但 Tableau 不会对外部内容承担责任或提供支持。

另请参见

此部分中的其他文章

感谢您提供反馈! 提交反馈时出错。请重试或向我们发送消息