提取数据

数据提取是保存的数据子集,您可以使用这些数据子集来改善性能,或利用原始数据中没有或不支持的 Tableau 功能。在创建数据的数据提取时,您可以通过使用筛选器和配置其他限制来减少数据总数。创建数据提取后,可使用原始数据中的数据对其进行刷新。在刷新数据时,您可以选择进行完全刷新(这样做将会替换所有数据提取内容),或者可以执行增量刷新(这样做仅会添加自上次刷新以来新增的行)。

数据提取具有优势的一些原因:

  • 支持大型数据集:您可以创建包含数十亿行数据的数据提取。

  • 帮助提高性能:当您与使用数据提取数据源的视图交互时,你所体验到的性能通常比基于原始数据连接与视图交互时所体验到的性能更好。

  • 支持附加功能:数据提取允许您利用原始数据无法可用或不支持的 Tableau 功能,例如不重复计数计算功能。

  • 提供对数据的离线访问权限:如果使用 Tableau Desktop,则在原始数据不可用时,数据提取允许您在本地保存和处理数据。例如,当您旅行时

数据提取的最新更改

Web 中的数据提取

从版本 2020.4 开始,数据提取可在 Web 制作和内容服务器中使用。现在,您不再必须使用 Tableau Desktop 来提取数据源。有关详细信息,请参见在 Web 上创建数据提取

逻辑和物理表数据提取

随着 2020.2 版中 Tableau 数据模型中的逻辑表和物理表的引入,数据提取存储选项已从单个表和多个表更改为逻辑表和物理表。这些选项更好地描述了如何存储数据提取。有关详细信息,请参见决定应以何种方式存储数据提取数据

弃用 .tde 格式

注意:从 2023 年 3 月开始,使用 .tde 格式的数据提取在 Tableau Cloud、Tableau Public 和 Tableau Server(版本 2023.1.0)中已弃用。有关详细信息,请参见数据提取升级为 .hyper 格式

从版本 10.5 开始,当您创建一个新的数据提取时,它将使用 .hyper 格式。.hyper 格式的数据提取利用了改进的数据引擎,此引擎针对更大的数据集支持更快的分析和查询性能。

同样,使用版本 10.5 及更高版本对 .tde 数据提取执行数据提取相关任务时,数据提取会升级到 .hyper 数据提取。在 .tde 数据提取升级为 .hyper 数据提取后,它不能恢复为 .tde 数据提取。有关详细信息,请参见数据提取升级为 .hyper 格式

视图中值和标记的变化

为了提高数据提取效率和可扩展性,可以在版本 10.5 及更高版本中以不同方式计算数据提取中的值(与版本 10.4 及更低版本相比)。更改计算值的方式可能会影响视图中标记的填充方式。在某些极少数的情况下,更改可能会导致视图形状发生变化或变为空白。这些更改可能也适用于多连接数据源、使用文件数据实时连接的数据源、连接到 Google 表格数据的数据源、基于云的数据源、纯数据提取数据源以及 WDC 数据源。

若要了解使用版本 2022.4 后您可能会在视图中看到的某些差异,请查看以下各部分。

日期和日期时间值的格式

在版本 10.5 中及更高版本中,数据提取将遵循关于如何通过 DATE、DATETIME 和 DATEPRASE 函数解释日期字符串的更加一致和严格的规则。这会影响日期的解析方式,或者这些函数所允许的日期格式和模式。更具体地说, 规则可以概括如下:

  1. 计算日期,然后按列进行分析,而不是按行进行分析。
  2. 计算日期,然后根据创建工作簿所在的位置的区域设置进行分析,而不是根据打开工作簿所在的计算机的区域设置进行分析。

这些新规则使数据提取更加高效,并能生成与商业数据库一致的结果。

但是,由于存在这些规则,特别是在创建工作簿时的区域设置与打开工作簿时的区域设置或工作簿所发布到的服务器的区域设置不同时,您可能会发现 1.) 日期和日期时间值更改为不同的日期和日期时间值,或者 2.) 日期和日期时间值更改为 Null。当日期和日期时间值更改为不同的日期和日期时间值或者变为 Null 时,通常表示基础数据存在问题。

为什么使用版本 10.5 和更高版本后您可能会在数据提取数据源中看到日期和日期时间值发生变化,以下是一些常见的原因。

日期/日期时间值发生变化的常见原因

Null 值的常见原因

  • 当函数必须在单个列中解析多种日期格式时。如果日期不确定并且可以用多种不同方式进行解释,则会根据 Tableau 为该列确定的格式来解释日期。有关一些示例,请参见以下日期方案 1日期方案 2
  • 当函数必须解析 YYYY-MM-DD (ISO) 格式时。有关示例,请参见日期方案 3
  • 当函数没有足够的信息来推导时间时,它可能会将值解释为“00:00:00.0”,并使用“0”来表示小时、分钟、秒和毫秒。
  • 当函数没有足够的信息来推导时间时,它可能会将月份值解释为“1”或“一月”。
  • 当函数解析年份时,会按以下方式解释年份:
    • 年份“07”被解释为“2007”
    • 年份“17”被解释为“2017”。
    • 年份“30”被解释为“2030”。
    • 年份“69”被解释为“2069”。
    • 年份“70”被解释为“1970”。
  • 当函数必须在单个列中解析多种日期格式时。在 Tableau 确定日期格式后,列中与格式不同的所有其他日期都将变为 Null 值。有关一些示例,请参见以下日期方案 1日期方案 2
  • 当函数必须解析 YYYY-MM-DD (ISO) 格式时。超出“YYYY”、“MM”或“DD”允许值的值将导致 null 值。有关示例,请参见日期方案 3
  • 当函数必须解析包含尾随字符的日期值时。例如,诸如“午夜”之类的时区和夏令时后缀和关键字会导致出现 Null 值。
  • 当函数必须解析无效的日期或时间时。例如,32/3/2012 会导致出现 Null 值。再例如,25:01:61 会导致出现 Null 值。
  • 当函数必须解析矛盾的输入时。例如,假设模式是“dd.MM (MMMM) y'”,输入字符串是“1.09 (August) 2017”,其中“9”和“August”都是月份。结果是 Null 值,因为月份值不一样。
  • 当函数必须解析矛盾的模式时。例如,一个指定公历 (y) 和 ISO 周 (ww) 混合的模式会导致出现 Null 值。
日期方案 1

假设您有一个以英语区域设置创建的工作簿,该工作簿使用 .tde 数据提取数据源。下表显示了该数据提取数据源中包含的一个字符串数据列。

10/31/2018
31/10/2018

12/10/2018

根据特定的英语区域设置,我们可以确定日期列的格式遵循 MDY(月日年)格式。以下各表显示了当使用 DATE 函数将字符串值转换为日期值时 Tableau 基于此区域设置所显示的内容。

October 31, 2018
October 31, 2018
December 10, 2018

如果以德语区域设置打开该数据提取,您将看到以下内容:

31 Oktober 2018
31 Oktober 2018
12 Oktober 2018

但是,在使用版本 10.5 及更高版本以德语区域设置打开数据提取后,将会严格实施德语区域设置的 DMY(日月年)格式,并导致出现 Null 值,原因是其中一个值未遵循 DMY 格式。

Null
October 31, 2018
October 12, 2018
日期方案 2

假设您有另一个以英语区域设置创建的工作簿,该工作簿使用 .tde 数据提取数据源。下表显示了该数据提取数据源中包含的数字日期数据列。

1112018
1212018
1312018
1412018

根据特定的英语区域设置,我们可以确定日期列的格式遵循 MDY(月日年)格式。当使用 DATE 函数将数字值转换为日期值时,以下各表展示了 Tableau 基于此区域设置所显示的内容。

11/1/2018
12/1/2018
Null
Null
日期方案 3

假设您有一个使用 .tde 数据提取数据源的工作簿。下表显示了该数据提取数据源中包含的一个字符串数据列。

2018-10-31
2018-31-10

2018/12/10

2018/10/12

由于日期使用 ISO 格式,因此日期列始终采用 YYYY-MM-DD 格式。以下各表显示了当使用 DATE 函数将字符串值转换为日期值时 Tableau 所显示的内容。

October 10, 2018
Null
December 10, 2018
October 12, 2018

注意:在版本 10.4(及更低版本)中,ISO 格式和其他日期格式可能生成不同的结果,具体情况取决于创建工作簿采用的区域设置。例如,在英语区域设置中,2018-12-10 和 2018/12/10 均可能生成 December 12, 2018。但是,在德语区域设置中,2018-12-10 可能生成 December 12, 2018,2018/12/10 可能生成 October 12, 2018。

排序顺序和区分大小写

数据提取支持排序规则,因此可以更恰当地对包含重音符号或大小写不同的字符串值进行排序。

例如,假设您有一个字符串值表。就排序顺序而言,这意味着,像“Égypte”这样的字符串值现在恰当地列在“Estonie”之后和“Fidji”之前。

关于 Excel 数据: 

就大小写而言,这意味着 Tableau 存储值的方式在版本 10.4(及更低版本)和版本 10.5(及更高版本)之间已更改。但是,用于排序和比较值的规则未更改。在版本 10.4(及更早版本)中,像“House”、“HOUSE”和“houSe”这样的字符串值被视为相同,并用一个代表性的值存储。在版本 10.5(及更高版本)中,这些相同的字符串值被为唯一,因此存储为单独的值。有关详细信息,请参见 值计算方式的更改

摆脱“前 N 个”查询中的束缚

如果数据提取中的“前 N 个”查询针对排名中的特定位置生成重复值,则使用版本 10.5 及更高版本时,摆脱束缚的位置可能会有所不同。例如,假设您创建了一个“前 3个”筛选器。位置 3、4 和 5 具有相同的值。使用版本 10.4 和更早版本时,最前项筛选器可能会返回位置 1、2 和 3。但是,使用版本 10.5 及更高版本时,最前项筛选器可能会返回位置 1、2 和 5。

浮点值的精度

数据提取能更好地利用计算机上的可用硬件资源,因此能够以高度并行的方式执行数学运算。正因如此,.hyper 数据提取的实数聚合顺序可能会不同。采用不同方式对数字进行聚合后,每次计算聚合时您可能都会在视图中的小数点后看到不同的值。这是因为浮点加法和乘法不一定遵循结合律。也就是说,(a + b) + c 不一定与 a + (b + c) 相同。同样,由于浮点乘法不一定遵循分配律,因此实数的聚合顺序也可能不同。也就是说,(a x b) x c 不一定与 a x b x c 相同。.hyper 数据提取中这种类型的舍入行为类似于商业数据库中的浮点舍入行为。

例如,假设您的工作簿在由浮点值组成的聚合字段上包含滑块筛选器。由于浮点值的精度已更改,因此筛选器可能会排除定义筛选器范围上限或下限的标记。没有这些数字可能会导致出现一个空白视图。要解决此问题,请移动筛选器上的滑块或删除并再次添加筛选器。

聚合的准确性

数据提取能更好地利用计算机上的可用硬件资源,针对大数据集进行了优化,因此能够以高度并行的方式计算聚合。正因如此,.hyper 数据提取执行的聚合可能与商业数据库中的结果类似,而超过专业统计计算软件中的结果。如果使用小数据集或者需要更高的准确性,请考虑通过参考线、摘要卡统计或者像方差、标准偏差、关联或协方差这样的表计算函数来执行聚合。

关于数据提取的“立即运算计算”选项

如果使用较早版本的 Tableau Desktop 在 .tde 数据提取中使用了“立即运算计算”选项,则某些计算字段已经实现并因此已提前计算并存储在数据提取中。如果将数据提取从 .tde 数据提取升级为 .hyper 数据提取,则不会包括数据提取中以前实现的计算。您必须再次使用“立即运算计算”选项,确保数据提取在升级后包括已实现的计算。有关详细信息,请参见在数据提取中实现计算

新数据提取 API

您可以使用 Extract API 2.0 创建 .hyper 数据提取。对于以前使用 Tableau SDK 执行的任务(例如发布数据提取),您可以使用 Tableau Server REST API 或 Tableau Server 客户端 (Python) 库。对于刷新任务,也可以使用 Tableau Server REST API。有关详细信息,请参见Tableau Hyper API

创建数据提取

尽管您可以通过 Tableau 工作流中的多个选项创建数据提取,但下面介绍的是主要方法。

  1. 连接到数据并在“数据源”页面上设置数据源后,请在右上角选择“数据提取”,然后单击“编辑”链接以打开“提取数据”对话框。

  2. (可选)配置以下一项或多项选项来指示 Tableau 如何存储、定义筛选器并限制数据提取中的数据量:

    • 决定应以何种方式存储数据提取数据

      您可以选择让 Tableau 使用两种结构(架构)之一将数据存储在数据提取中:逻辑表(标准化架构)或物理表(标准化架构)。有关逻辑表和物理表的详细信息,请参见Tableau 数据模型

      所选的选项取决于您的需求。

      • 逻辑表

        使用数据源中每个逻辑表的一个数据提取表存储数据。定义逻辑表的物理表与该逻辑表合并并存储在一起。举例来说,如果数据源由单个逻辑表组成,则数据将存储在单个表中。如果数据源由三个逻辑表组成(每个表包含多个物理表),则数据提取数据将存储在三个表中,每个逻辑表一个。

        如果要使用其他数据提取属性(如数据提取筛选器、聚合、“前 N 个”或需要非规范化数据的其他功能)限制数据提取中的数据量,请选择“逻辑表”。当数据使用直通函数 (RAWSQL) 时,也使用“逻辑表”。这是 Tableau 用于存储数据提取数据的默认结构。如果在数据提取包含联接时使用此选项,则会在创建数据提取时应用联接。

      • 物理表

        使用数据源中每个物理表的一个数据提取表存储数据。

        如果您的数据提取由使用一个或多个等值联接合并的表组成,并且满足下面列出的使用“物理表”选项的条件,请选择“物理表”。如果使用此选项,则会在查询时执行联接。

        此选项能够潜在地提升性能和减小数据提取文件的大小。有关 Tableau 如何建议您使用“物理表”选项的详细信息,请参见关于使用“物理表”选项的提示。在某些情况下,您也可以使用此选项作为行级安全性的解决方法。有关使用 Tableau 的行级安全性的详细信息,请参见在数据行级别限制访问权限

        使用“物理表”选项的条件

        若要使用“物理表”选项存储数据提取,数据提取中的数据必须满足下面列出的所有条件。

        • 物理表之间的所有联接均为等值 (=) 联接
        • 用于关系或联接的列的数据类型相同
        • 未使用直通函数 (RAWSQL)
        • 未配置增量刷新
        • 未配置数据提取筛选器
        • 未配置“前 N 个”或抽样

        如果以“物理表”方式存储数据提取,则无法向其附加数据。对于逻辑表,不能将数据追加到具有多个逻辑表的数据提取。

      注意:“逻辑表”和“物理表”选项都只会影响数据提取中数据的存储方式。这些选项不影响数据提取中的表在“数据源”页面上的显示方式。

      例如,假设您的数据提取由一个包含三个物理表的逻辑表组成。如果直接打开配置为使用默认选项“逻辑表”的数据提取 (.hyper) 文件,您将看到列在“数据源”页面上的一个表。但是,如果打开使用打包数据源 (.tdsx) 文件的数据提取或包含其对应数据提取 (.hyper) 文件的数据源 (.tdsx) 文件,您将在“数据源”页面上看到包含数据提取的全部三个表。

    • 确定要提取多少数据 

      单击“添加”定义一个或多个筛选器,以限制基于字段及字段值提取的数据量。

    • 对数据提取中的数据进行聚合 

      选择“聚合可视维度的数据”以使用度量的默认聚合来聚合度量。对数据进行聚合可以合并行,并且可以最大限度地减少数据提取文件的大小并提高性能。

      选择对数据进行聚合时,也可以选择按指定的日期级别(例如“年”、“月”等)来“汇总日期”。下面的示例说明了如何为您可以选择的每个聚合选项提取数据。

      原始数据每个记录都显示为一个单独行。数据中共有 7 行。
      聚合可视维度的数据

      (无汇总)

      具有相同日期和地区的记录已聚合到一行中。数据提取中共有 5 行。
      聚合可视维度的数据
      (按“月”汇总日期)
      日期已按“月”级别进行汇总,并且具有相同地区的记录已聚合到一行中。数据提取中共有 3 行。
    • 选择要提取的行

      选择要提取的行数。

      可以提取所有行 N 行。Tableau 首先会应用筛选器和聚合,然后从经过筛选和聚合的结果中提取行数。行数选项取决于要从中进行提取的数据源的类型。

      注意:

      • 并非所有数据源都支持抽样。因此,您在“提取数据”对话框中可能看不到“抽样”选项。

      • 数据提取中将不包括您最初在“数据源”页面或工作表标签页中隐藏的任何字段。单击“隐藏所有未使用的字段”按钮可将这些隐藏字段从数据提取中移除。

  3. 完成后,单击“确定”

  4. 单击工作表标签页。单击工作表标签页可启动数据提取创建过程。

  5. 在随后显示的对话框中,选择一个用于保存数据提取的位置,为该数据提取文件指定名称,然后单击“保存”

    如果“保存”对话框未显示,请参见下面的数据提取疑难解答部分。

关于使用数据提取的一般提示

保存工作簿以保留与数据提取的连接

创建数据提取后,工作簿将开始使用您的数据的数据提取版本。但是,在保存工作簿之前,不会保留与数据的数据提取版本的连接。这意味着,如果不先保存就关闭工作簿,则在下次打开该工作簿时,该工作簿将连接到原始数据源。

在抽样数据与整个数据提取之间切换

当您使用大型数据提取时,您可能需要创建一个带数据样本的数据提取,以便每次将字段放在工作表标签页中的功能区上时,您都可以设置视图,同时避免长时间查询。然后,可以在使用数据提取(带数据样本)和使用整个数据源之间进行切换,方法是在“数据”菜单中选择数据源,然后选择“使用数据提取”

不要直接连接到数据提取

由于数据提取已保存到文件系统,因此可以使用新的 Tableau Desktop 实例直接连接到它们。之所以不推荐这样做,有几个原因:

  • 表名称将不同。存储在数据提取中的表使用特殊命名来保证名称唯一性,并且它可能不是人类可读的。
  • 无法刷新数据提取。直接连接到数据提取时,Tableau 会将该文件视为真正的源,而不是基础数据的克隆。因此,无法将其与源数据关联。
  • 数据模型和关系将丢失。数据模型和表之间的关系存储在 .tds 文件(而不是 .hyper 文件)中,因此当直接连接到 .hyper 文件时,此信息将丢失。此外,如果使用逻辑表存储进行提取,则看不到对原始基础物理表的任何引用。

从工作簿中移除数据提取

您可以随时移除数据提取,方法是在“数据”菜单中选择数据提取数据源,然后选择“数据提取”>“移除”。移除数据提取时,您可以选择“仅从工作簿中移除数据提取”“移除并删除数据提取文件”。后一个选项将从硬盘中删除数据提取。

参阅数据提取历史记录

您可以查看上次更新数据提取的时间以及其他详细信息,方法是在“数据”菜单中选择数据源,然后选择“数据提取”>“历史记录”

如果打开所保存的带有数据提取的工作簿,并且 Tableau 找不到此数据提取,则在出现提示时,请在“未找到数据提取”对话框中选择以下选项之一:

  • 查找数据提取:如果数据提取存在,但不在 Tableau 最初保存它的位置中,请选择此选项。单击“确定”以打开“打开文件”对话框,您可以在其中指定数据提取文件的新位置。

  • 删除数据提取:如果您没有对数据提取的进一步需求,请选择此选项。这相当于关闭数据源。将会删除引用数据源的所有已打开工作簿。

  • 停用数据提取:使用从中创建数据提取的原始数据源,而不是数据提取。

  • 重新生成数据提取:重新生成数据提取。会自动应用您在最初创建数据提取时指定的所有筛选器和其他自定义项。

关于使用“物理表”选项的提示

在设置和使用数据提取时,Tableau 通常会建议您使用默认数据存储选项“逻辑表”。在许多情况下,某些所需的数据提取功能(比如数据提取筛选器)只有在使用“逻辑表”选项时才可用。

适用于比预期大的数据提取的“物理表”选项

应谨慎地使用“物理表”选项来帮助处理特定情况,例如您的数据源满足使用“物理表”选项的条件,并且数据提取的大小比预期大。若要确定数据提取是否比预期大,使用“逻辑表”选项的数据提取中的总行数必须比创建数据提取之前所有合并的表的总行数多。如果遇到这种情况,请尝试改用“物理表”选项。

使用“物理表”选项时的替代筛选建议

使用“物理表”选项时,可帮助减少数据提取中的数据的其他选项(如“数据提取筛选器”、“聚合”、“前 N 个”和“抽样”)会被禁用。如果需要减少使用“物理表”选项的数据提取中的数据,请考虑使用以下建议之一,在将数据提取引入 Tableau Desktop 之前筛选数据:

  • 使用自定义 SQL 连接到数据并定义筛选器:请改用自定义 SQL 连接到数据,而不是连接到数据库表。创建自定义 SQL 查询时,请确保其包含减少数据提取中的数据所需的适当筛选级别。有关 Tableau Desktop 中的自定义 SQL 查询的详细信息,请参见连接到自定义 SQL 查询

  • 在数据库中定义视图:如果您有数据库的写入访问权限,请考虑定义一个只包含数据提取所需数据的数据库视图,然后通过 Tableau Desktop 连接到该数据库视图。

数据提取的行级别安全性

如果要在行级别保护数据提取数据的安全,建议使用“物理表”选项来实现此方案。有关 Tableau 的行级别安全性的详细信息,请参见在数据行级别限制访问权限

数据提取疑难解答

  • 创建数据提取花费很长时间:根据数据集的大小,创建提取数据可能需要较长时间。不过,在提取了数据并将其保存到计算机后,性能可能会提高。

  • 未创建数据提取: 如果数据集包含非常大量的列(例如,数千个列),则在某些情况下 Tableau 可能无法创建数据提取。如果遇到问题,请考虑提取较少的列或重新构建基础数据。

  • “保存”对话框未显示未依据 .twbx 创建数据提取: 如果按照上面的过程从打包工作簿中提取数据,“保存”对话框将不会显示。在依据打包工作簿 (.twbx) 创建数据提取时,数据提取文件会自动存储在与打包工作簿关联的文件包中。若要访问依据打包工作簿创建的数据提取文件,您必须将工作簿解包。有关详细信息,请参见打包工作簿

感谢您的反馈!