提取数据
数据提取是与原始数据集分开保存的信息子集。它有两个目的:提高性能以及利用原始数据中可能不可用或不支持的 Tableau 功能。通过创建数据提取,您可以通过应用筛选器和设置其他限制来有效减少总体数据量。
创建数据提取后,可以使用原始源中的最新数据对其进行刷新。在刷新过程中,您可以灵活地选择完全刷新(替换数据提取中的所有现有内容)或增量刷新(仅包括自上次刷新以来的新行)。
数据提取的优点
- 处理大型数据集:数据提取可以处理大量数据,甚至达到数十亿行。这使用户能够有效地处理大量数据集。
- 改进的性能:与直接连接到原始数据的视图相比,与利用提取数据源的视图进行交互可以带来更好的性能。数据提取可优化查询性能,从而加快数据分析和可视化速度。
- 增强的功能:数据提取提供对原始数据源可能不可用或不支持的其他 Tableau 功能(例如特定函数)的访问。
- 脱机数据访问 (Tableau Desktop):数据提取允许脱机访问数据。这意味着即使原始数据源不可用,用户仍然可以在本地保存、操作和使用数据。
创建数据提取
有多种方式可用于创建数据提取,但主要方法如下所述。
- 连接到数据并在“数据源”页面上设置数据源后,请在右上角选择“数据提取”,然后选择“编辑”链接以打开“提取数据”对话框。
- 展开每个部分以查看其选项,或选择“全部展开”。本主题后面将详细介绍每个部分的详细信息。
- 数据存储:在“逻辑表”或“物理表”之间切换。
- 筛选器:设置筛选器,以限制基于字段及字段值提取的数据量。
- 聚合:选择“聚合可视维度的数据”以使用度量的默认聚合来聚合度量。您还可以选择将“日期汇总”到指定的日期级别,例如年、月等。
- 行数:选择要提取的行数。可以提取所有行、样本或前 N 行。
- 增量刷新:根据特定列和日期范围设置增量刷新。您还可以选择是否替换或附加最后一行。
- 完成后,选择“保存设置”。
- 选择工作表标签页。这将启动数据提取的创建。
- 接下来,选择保存数据提取的位置。
- 输入数据提取文件名。
- 选择“保存”。如果“保存”对话框未显示,请参见数据提取疑难解答部分。
数据提取设置描述
创建数据提取时,您可以配置许多设置。
在“数据存储”下,您可以选择逻辑表或物理表。逻辑表将数据存储在数据源中每个逻辑表的一个数据提取表中。另一方面,物理表将数据存储在数据源中每个物理表的一个数据提取表中。
逻辑表和物理表选项都只会影响数据提取中数据的存储方式。这些选项不影响数据提取中的表在“数据源”页面上的显示方式。
例如,假设您的数据提取由一个包含三个物理表的逻辑表组成。如果直接打开配置为使用默认选项“逻辑表”的数据提取 (.hyper) 文件,您将看到列在“数据源”页面上的一个表。但是,如果打开使用打包数据源 (.tdsx) 文件的数据提取或包含其对应数据提取 (.hyper) 文件的数据源 (.tdsx) 文件,您将在“数据源”页面上看到全部三个表。
逻辑表
Tableau 使用逻辑表作为存储数据提取数据的默认结构。在设置和使用数据提取时,Tableau 通常会建议您使用默认数据存储选项“逻辑表”。您可能需要的许多功能(如数据提取筛选器、聚合、“前 N 个”或直通函数 (RAWSQL))只有在使用逻辑表选项时才可用。但是,不能将数据追加到具有多个逻辑表的数据提取。
如果选择逻辑表选项并且您的数据提取包括联接,则将在创建数据提取时应用联接。
物理表
如果您的数据满足以下所有条件,则此选项在查询时执行联接,有可能提高性能并减小数据提取文件的大小。
- 物理表之间的所有联接均为等值 (=) 联接。
- 用于关系或联接的列的数据类型相同。
- 未使用直通函数 (RAWSQL)。
- 未配置增量刷新。
- 未配置数据提取筛选器。
- 未配置“前 N 个”或抽样。
- 无需将任何数据附加到数据提取。
使用物理表的提示
比预期大的数据提取:若要确定数据提取是否比预期大,使用“逻辑表”选项的数据提取中的总行数必须比创建数据提取之前所有合并的表的总行数多。如果遇到这种情况,请尝试使用物理表选项。
筛选选项:使用“物理表”选项时,可帮助减少数据提取中的数据的其他选项(如“数据提取筛选器”、“聚合”、“前 N 个”和“抽样”)会被禁用。如果需要减少使用“物理表”选项的数据提取中的数据,请考虑使用以下建议之一,在将数据提取引入 Tableau Desktop 之前筛选数据:
- 物理表之间的所有联接均为等值 (=) 联接。
连接到您的数据并使用自定义 SQL 定义筛选器。不要连接到数据库表,而是使用自定义 SQL 连接到数据。创建自定义 SQL 查询时,请确保其包含减少数据提取中的数据所需的适当筛选级别。有关 Tableau Desktop 中的自定义 SQL 查询的详细信息,请参见“连接到自定义 SQL 查询”。
在数据库中定义视图。如果您有数据库的写入访问权限,请考虑定义一个只包含数据提取所需数据的数据库然后通过 Tableau Desktop 连接到该数据库视图。
数据提取的行级别安全性:如果要在行级别保护数据提取数据的安全,建议使用“物理表”选项来实现此方案。有关 Tableau 的行级别安全性的详细信息,请参见在数据行级别限制访问权限。
筛选器
使用筛选器来限制基于字段及字段值提取的数据量。
注意:对于具有单个基表的数据源,逻辑表上的数据提取筛选器是普遍筛选器(应用于整个数据源)。对于具有使用多事实关系的多个基表的数据源,数据提取筛选器是针对每个表的,并且仅适用于逻辑表本身。有关普遍筛选器和针对每个表的筛选器的详细信息,请参见筛选数据源中的数据。
聚合
聚合允许您聚合度量。您也可以选择按指定的日期级别(例如“年”、“月”等)来“汇总日期”。示例说明了如何为您可以选择的每个聚合选项提取数据。
- 原始数据:每条记录都显示为一个单独行。原始数据中共有 7 行。
- 聚合可视维度的数据(无汇总):具有相同日期和字母的记录已聚合到一行中。数据提取中共有 5 行。
- 聚合可视维度的数据(按“月”汇总日期):日期已按“月”级别进行汇总,并且具有相同地区的记录已聚合到一行中。数据提取中共有 3 行。
原始数据 | 不进行汇总的聚合 | 进行汇总的聚合 |
![]() | ![]() | ![]() |
行数
可以提取所有行或前 N 行。Tableau 首先会应用筛选器和聚合,然后从经过筛选和聚合的结果中提取行数。行数选项取决于要从中进行提取的数据源的类型。您可能在“提取数据”对话框中看不到采样选项,因为某些数据源不支持采样。
注意:数据提取中将不包括您最初在“数据源”页面或工作表标签页中隐藏的任何字段。单击“隐藏所有未使用的字段”按钮可将这些隐藏字段从数据提取中移除。
大多数数据源都支持增量刷新。您可以将刷新配置为仅添加自上次提取数据以来新增的行,而不是刷新整个数据提取。
例如,您可能有一个每天都使用新销售交易进行更新的数据源。您只需添加当天发生的新交易,而不是每天重新生成整个数据提取。
增量刷新提示
增量刷新:
- 在“行数”中,您需要选择“所有行”。
- 如果启用聚合,则增量刷新不可用。
高级设置:
- 高级设置与筛选器不兼容。
数据提取提示
保存工作簿以保留与数据提取的连接
创建数据提取后,工作簿将开始使用您的数据的数据提取版本。但是,在保存工作簿之前,不会保存与数据的数据提取版本的连接。这意味着,如果不先保存就关闭工作簿,则在下次打开该工作簿时,该工作簿将连接到原始数据源。
在抽样数据与整个数据提取之间切换
当您处理大量数据提取时,创建较小的数据样本会很有帮助。这使您可以设置视图,而不必在每次向分析中添加字段时运行冗长的查询。通过在“数据”菜单中选择适当的选项,您可以轻松地在使用示例数据和完整数据源之间切换。
不要直接连接到数据提取
将数据提取保存到计算机时,您可以使用新的 Tableau Desktop 直接连接到这些数据提取。但是,由于以下几个原因,不建议这样做:
- 表的名称可能不同。数据提取使用特殊命名来确保每个表都有唯一的名称,这可能很难理解。
- 您无法更新或刷新数据提取。当您直接连接到数据提取时,Tableau 会将其视为原始数据源,而不是副本。这意味着您无法将其链接回原始数据源。
- 结构和表之间的关系将丢失。表之间的排列和连接存储在 .tds 文件中,而不是在 .hyper 文件中。因此,当您直接连接到 .hyper 文件时,您将丢失此信息。如果您为数据提取使用逻辑表存储,您将看不到任何对原始物理表的引用。
如果您使用数据策略中的用户函数连接到虚拟连接,请不要使用数据提取
如果虚拟连接具有包含用户函数(链接在新窗口中打开)(例如,USERNAME()
)的数据策略,并且您从工作簿或数据源连接到它并在该处创建数据提取,则数据提取将仅包含与创建数据提取时的虚拟连接数据策略匹配的行。若要利用数据策略中包含用户函数的虚拟连接,请使用从工作簿或数据源到虚拟连接的实时连接,而不是数据提取。
从工作簿中移除数据提取
您可以随时移除数据提取,方法是在“数据”菜单中选择数据提取数据源,然后选择 。移除数据提取时,您可以选择“仅从工作簿中移除数据提取”或“移除并删除数据提取文件”。后一个选项将从硬盘中删除数据提取。
查看数据提取历史记录 (Tableau Desktop)
您可以查看上次更新数据提取的时间以及其他详细信息,方法是在“数据”菜单中选择数据源,然后选择 。
如果打开所保存的带有数据提取的工作簿,并且 Tableau 找不到此数据提取,则在出现提示时,请在“未找到数据提取”对话框中选择以下选项之一:
- 查找数据提取:如果数据提取存在,但不在 Tableau 最初保存它的位置中,请选择此选项。单击“确定”以打开“打开文件”对话框,您可以在其中指定数据提取文件的新位置。
- 删除数据提取:如果您没有对数据提取的进一步需求,请选择此选项。这相当于关闭数据源。将会删除引用数据源的所有已打开工作簿。
- 停用数据提取:使用从中创建数据提取的原始数据源,而不是数据提取。
- 重新生成数据提取:重新生成数据提取。会自动应用您在最初创建数据提取时指定的所有筛选器和其他自定义项。
数据提取疑难解答
- 创建数据提取花费很长时间:根据数据集的大小,创建提取数据可能需要较长时间。不过,在提取了数据并将其保存到计算机后,性能可能会提高。
- 未创建数据提取:如果数据集包含大量的列(例如,数千个列),则在某些情况下 Tableau 可能无法创建数据提取。如果遇到问题,请考虑提取较少的列或重新构建基础数据。
- “保存”对话框未显示或未依据 .twbx 创建数据提取:如果按照上面的过程从打包工作簿中提取数据,“保存”对话框将不会显示。在依据打包工作簿 (.twbx) 创建数据提取时,数据提取文件会自动存储在与打包工作簿关联的文件包中。若要访问依据打包工作簿创建的数据提取文件,您必须将工作簿解包。有关详细信息,请参见打包工作簿。
数据提取功能更新
增量数据提取的子范围刷新
在 Tableau 版本 2024.2 及更新版本中,您可以指定额外的时间段来重新提取以前提取的数据并捕获可能发生的任何更改。有关详细信息,请参见刷新数据提取。
增量刷新
从版本 2024.1 开始,Tableau 引入了一项功能,使用户能够使用非唯一键列对数据提取执行增量刷新。有一个新的 UI 支持这些高级设置。
此更新还在提取过程中引入了一个额外步骤。在增量刷新期间,Tableau 首先从数据提取中移除与先前记录的最高值匹配的行。随后,Tableau 查询值高于或等于前一个最高值的所有行。此方法可确保所有已删除的行以及所有新添加的行都得到考虑。
Web 中的数据提取
从版本 2020.4 开始,数据提取可在 Web 制作和内容服务器中使用。现在,您不再必须使用 Tableau Desktop 来提取数据源。有关详细信息,请参见在 Web 上创建数据提取。
逻辑和物理表数据提取
随着 2020.2 版中 Tableau 数据模型中的逻辑表和物理表的引入,数据提取存储选项已从单个表和多个表更改为逻辑表和物理表。这些选项更好地描述了如何存储数据提取。有关详细信息,请参见提取数据。
弃用 .tde 格式
当您创建数据提取时,它将使用 .hyper 格式。.hyper 格式的数据提取利用了改进的数据引擎,此引擎针对更大的数据集支持更快的分析和查询性能。从 2023 年 3 月开始,使用 .tde 格式的数据提取在 Tableau Cloud、Tableau Public 和 Tableau Server(版本 2023.1.0)中已弃用。版本 2024.2 是可以打开 .tde 格式文件的最后一个版本。有关详细信息,请参见数据提取升级为 .hyper 格式。
为了提高数据提取效率和可扩展性,可以采用与某些数据源不同的方式计算数据提取中的值。更改计算值的方式可能会影响视图中标记的填充方式。在某些极少数的情况下,更改可能会导致视图形状发生变化或变为空白。这些更改可能也适用于多连接数据源、使用文件数据实时连接的数据源、连接到 Google 表格数据的数据源、基于云的数据源、纯数据提取数据源以及 WDC 数据源。
日期和日期时间值的格式
数据提取将遵循关于如何通过 DATE、DATETIME 和 DATEPRASE 函数解释日期字符串的一致和严格的规则。这会影响日期的解析方式,或者这些函数所允许的日期格式和模式。更具体地说, 规则可以概括如下:
- 计算日期,然后按列进行分析,而不是按行进行分析。
- 计算日期,然后根据创建工作簿所在的位置的区域设置进行分析,而不是根据打开工作簿所在的计算机的区域设置进行分析。
这些规则使数据提取更加高效,并能生成与商业数据库一致的结果。
日期/日期时间值发生变化的常见原因
- 如果日期不确定并且可以用多种不同方式进行解释,则会根据 Tableau 为该列确定的格式来解释日期。有关一些示例,请参见以下方案 1。
- 当函数必须解析 YYYY-MM-DD (ISO) 格式时。有关示例,请参见方案 2。
- 当函数解析年份时,会按以下方式解释年份:
- 年份“07”被解释为“2007”
- 年份“17”被解释为“2017”。
- 年份“30”被解释为“2030”。
- 年份“69”被解释为“2069”。
- 年份“70”被解释为“1970”。
Null 值的常见原因
- 当函数必须在单个列中解析多种日期格式时。在 Tableau 确定日期格式后,列中与格式不同的所有其他日期都将变为 Null 值。有关一些示例,请参见以下方案 1。
- 当函数必须解析 YYYY-MM-DD (ISO) 格式时。超出“YYYY”、“MM”或“DD”允许值的值将导致 null 值。有关示例,请参见方案 2。
- 当函数必须解析包含尾随字符的日期值时。例如,诸如“午夜”之类的时区和夏令时后缀和关键字会导致出现 Null 值。
- 当函数必须解析无效的日期或时间时。例如,32/3/2024 会导致出现 Null 值。再例如,25:01:61 会导致出现 Null 值。
- 当函数必须解析矛盾的输入时。例如,假设模式是“dd.MM (MMMM) y'”,输入字符串是“1.09 (August) 2024”,其中“9”和“August”都是月份。结果是 Null 值,因为月份值不一样。
- 当函数必须解析矛盾的模式时。例如,一个指定公历 (y) 和 ISO 周 (ww) 混合的模式会导致出现 Null 值。
方案 1
假设您有一个以英语区域设置创建的工作簿,该工作簿使用 .tde 数据提取数据源。下表显示了该数据提取数据源中包含的一个字符串数据列。
10/31/2024 |
31/10/2024 |
12/10/2024 |
根据特定的英语区域设置,我们可以确定日期列的格式遵循 MDY(月日年)格式。以下各表显示了当使用 DATE 函数将字符串值转换为日期值时 Tableau 基于此区域设置所显示的内容。
October 31, 2024 |
October 31, 2024 |
December 10, 2024 |
如果以德语区域设置打开该数据提取,您将看到以下内容:
31 Oktober 2024 |
31 Oktober 2024 |
12 Oktober 2024 |
但是,在使用版本 10.5 及更高版本以德语区域设置打开数据提取后,将会严格实施德语区域设置的 DMY(日月年)格式,并导致出现 Null 值,原因是其中一个值未遵循 DMY 格式。
Null |
October 31, 2024 |
October 12, 2024 |
方案 2
假设您有数据源中包含的一个字符串数据列。
2024-10-31 |
2024-31-10 |
2024-12-10 |
2024-10-12 |
由于日期使用 ISO 格式,因此日期列始终采用 YYYY-MM-DD 格式。以下各表显示了当使用 DATE 函数将字符串值转换为日期值时 Tableau 所显示的内容。
October 10, 2024 |
Null |
December 10, 2024 |
October 12, 2024 |
排序顺序和区分大小写
数据提取支持排序规则,因此可以更恰当地对包含重音符号或大小写不同的字符串值进行排序。
例如,假设您有一个字符串值表。就排序顺序而言,这意味着,像“Égypte”这样的字符串值现在恰当地列在“Estonie”之后和“Fidji”之前。
关于大小写,相同的字符串值被认为是唯一的,因此存储为单个值。
摆脱“前 N 个”查询中的束缚
数据提取中的“前 N 个”查询可能会针对排名中的特定位置生成重复值。例如,假设您创建了一个“前 3个”筛选器。位置 3、4 和 5 具有相同的值。前 N 个筛选器返回 1、2 和 5 个位置。
浮点值的精度
数据提取能更好地利用计算机上的可用硬件资源,因此能够以高度并行的方式执行数学运算。正因如此,.hyper 数据提取的实数聚合顺序可能会不同。采用不同方式对数字进行聚合后,每次计算聚合时您可能都会在视图中的小数点后看到不同的值。这是因为浮点加法和乘法不一定遵循结合律。也就是说,(a + b) + c 不一定与 a + (b + c) 相同。同样,由于浮点乘法不一定遵循分配律,因此实数的聚合顺序也可能不同。也就是说,(a x b) x c 不一定与 a x b x c 相同。.hyper 数据提取中这种类型的舍入行为类似于商业数据库中的浮点舍入行为。
例如,假设您的工作簿在由浮点值组成的聚合字段上包含滑块筛选器。由于浮点值的精度已更改,因此筛选器可能会排除定义筛选器范围上限或下限的标记。没有这些数字可能会导致出现一个空白视图。要解决此问题,请移动筛选器上的滑块或删除并再次添加筛选器。
聚合的准确性
数据提取能更好地利用计算机上的可用硬件资源,针对大数据集进行了优化,因此能够以高度并行的方式计算聚合。正因如此,.hyper 数据提取执行的聚合可能与商业数据库中的结果类似,而超过专业统计计算软件中的结果。如果使用小数据集或者需要更高的准确性,请考虑通过参考线、摘要卡统计或者像方差、标准偏差、关联或协方差这样的表计算函数来执行聚合。
您可以使用 Extract API 创建 .hyper 数据提取。对于诸如发布数据提取等任务,您可以使用 Tableau Server REST API 或 Tableau Server 客户端 (Python) 库。对于刷新任务,也可以使用 Tableau Server REST API。有关详细信息,请参见Tableau Hyper API。