# 转换数据

您可以创建可重用和基于规则的数据转换，作为数据管道的一部分。您可以将转换作为数据登录的一部分，或创建可重用的转换数据任务。您可以执行行级转换、包含 SQL 转换并设计复杂的转换流。生成的数据集可以具体化为表，也可以创建为动态执行转换的视图。

信息注释高级转换可通过 Qlik Talend Cloud Premium 或 Qlik Talend Cloud Enterprise 订阅获得。

* 您可以执行显式数据集转换，或者创建转换多个数据集的全局规则。您还可以过滤数据集以创建行的子集。

* 您可以添加 SQL 转换。SQL 转换允许您将 SQL SELECT 查询输入到管道中，以定义复杂或简单的转换。

* 您可以使用 SQL Workbench 探索已准备好的任务中的数据，并在项目上下文中验证 SQL 查询。有关更多信息，请参阅[使用 SQL Workbench 探索数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/SQL-workbench-data-exploration.htm)。

* 您可以添加具有源、处理器和目标的可视化转换流，以定义复杂或简单的转换。

信息注释数据任务在其所属项目的所有者的上下文中运行。有关所需角色和权限的更多信息，请参阅[数据空间角色和权限](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/DataSpaces/permissions-data-space.htm)。

转换数据任务包含三个视图：

* 转换

  此视图显示所有转换，以可视化从源数据集到目标数据集的流程。

* 数据集

  此视图显示数据集上的所有基本转换，如筛选数据或添加列，以及执行全局转换的规则。

* 模型

  此视图允许您创建包含数据集之间关系的数据模型。有关更多信息，请参阅[创建数据模型](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Create-data-model.htm)。

除了在数据仓库中存储表外，您还可以将表存储为由数据平台管理的 Iceberg 表。此选项目前仅适用于 Snowflake 项目。在任务设置中的表类型下选择 Snowflake 托管的 Iceberg 表，就可以实现这一点。

## 创建转换数据任务

创建转换数据任务的最简单方法是单击存储数据任务上的 ...，然后选择转换数据。

也可以单击项目中的创建，然后选择转换数据。在这种情况下，您需要定义要使用的源数据任务。

1. 在转换中定义源数据和目标。

   您可以：

   * 执行数据集转换

     选择源数据集并单击添加到目标将其添加到目标。

     您可以对数据集执行基本转换，例如在数据集中筛选数据或添加列。

     有关更多信息，请参阅[管理数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm)。

   * 添加 SQL 转换

     选择源数据集，然后单击添加 SQL 转换。

     SQL 转换允许您将 SQL SELECT 查询输入到管道中，以定义复杂或简单的转换。

     有关更多信息，请参阅[添加 SQL 转换](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Adding-SQL-based-tables.htm)。

   * 添加转换流

     选择源数据集，然后单击添加转换流。

     流设计器允许您使用源、处理器和目标创建转换流，以定义复杂或简单的转换。

     有关更多信息，请参阅[添加转换流](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Adding-transformation-flows.htm)。

2. 您还可以通过单击选择源数据从其他存储数据任务添加更多数据集。

   您可以从当前项目或其他项目添加数据集。要从另一个项目添加数据集，请执行以下操作：

   * 您必须在已消费项目的空间中至少具有可以使用角色。

   * 这两个项目必须位于同一数据平台上。

   如果选定的项目处于版本控制之下，您可以选择要用作源的分支。有关跨项目管道的详细信息，请参阅[构建跨项目管道](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Data-projects.htm#Building)。

3. 添加所需的转换后，可以通过单击验证数据集来验证数据集。如果验证发现错误，请在继续之前修复错误。

   有关更多信息，请参阅[验证和调整数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm#Validati)。

4. 创建数据模型

   单击模型以设置包含的数据集之间的关系。

   有关更多信息，请参阅[创建数据模型](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Create-data-model.htm)。

5. 单击准备以准备数据任务和所有必需的工件。这可能需要一点时间。

   您可以按照屏幕下部准备进度下的进度进行操作。

   信息注释在准备任务之前，停止所有直接下游的任务。

6. 当状态显示准备时，您可以运行数据任务。

   单击 ... 然后单击运行。

数据任务现在将开始创建数据集来转换数据。

信息注释开始生成数据集时，无法更改包含哪些数据集。

## 使用转换视图

在转换中，显示所有转换以可视化从源数据集到目标数据集的流程。

* 选择一个转换以查看使用了哪些源数据集，以及创建了哪些目标数据集。

* 选择一个源以查看使用它的所有转换以及所有生成的目标。

* 选择一个目标以查看哪些是源数据集，以及哪个转换创建了此目标数据集。

在转换中转换视图

在转换中转换视图

在转换中转换视图 ![转换中的转换视图](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/qcdi_transform.png)

您可以通过单击显示选项更改以下设置：

* 按转换类型筛选

  仅显示一种或两种转换类型的转换。

* 筛选器

  显示所有转换或仅显示选定的转换。您必须选择一个转换才能启用此选项。

* 密度

  选择是使用紧凑布局显示变换，还是使用更多空间显示宽布局。

## 使用数据集视图

在数据集中，您可以查看和编辑转换任务中的所有目标数据集。

有关更多信息，请参阅 [管理数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm)。

### 添加目标数据集

您可以将更多目标数据集添加到转换任务中。

1. 单击the 添加数据集 icon。

2. 为数据集提供名称和描述（可选）。

3. 从源数据集中的任务中可用的数据集中选择源数据集。

   提示注释您可以选择无源数据集来创建未连接到任何源的空数据集。您可以在设计过程中向数据集添加列，但必须先连接到源数据集，然后才能准备任务。

目标数据集现在已添加。

### 更改源数据集

您可以更改目标数据集的源数据集。

1. 单击the 来源： icon 在 [源数据集名称] 之后。

2. 从另一个源数据集中的任务中可用的数据集中选择源数据集。

   提示注释您可以选择无源数据集以断开目标数据集与源的连接。您可以在设计过程中编辑数据集，但必须先连接到源数据集，然后才能准备任务。

### 添加新的列

您可以向目标数据集添加新列。

* 从头开始添加列

  单击 + 添加。

  提供列名称，并设置表达式来定义列数据。

  有关更多信息，请参阅[向数据集添加列](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Add-columns.htm)。

* 从源添加列

  单击添加 旁边的 the 从源添加列 icon，然后选择 。

  从源数据集中选择列。

### 对列重新排序

您可以更改列的序数位置。

1. 选择列。

2. 单击the 重新排序 icon 然后 。

3. 使用箭头将列向上或向下移动。

4. 准备就绪后关闭更改序数。

### 创建转换规则

您可以创建可重用的转换规则来对数据集执行全局转换。

有关创建规则的详细信息，请参阅[创建规则以转换数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Transformation-rules.htm)。

提示注释您可通过选择 显示规则效果来查看规则的效果。已启用显示规则效果时，您无 法更改数据集。

### 筛选数据集

如果需要，可以筛选数据以创建行的子集。

* 单击the 筛选 icon 然后 。

有关筛选的详细信息，请参阅[筛选数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Filter-data.htm)。

## 计划转换任务

您可以将转换任务计划为定期更新。您可以设置基于时间的计划，或将任务设置为在输入数据任务完成运行后运行。

单击数据任务上的 ...，然后选择计划以创建计划。默认计划设置继承自项目中的设置。有关默认设置的详细信息，请参阅[转换默认值](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Data-project-settings.htm#Transfor)。

始终要将计划设置为打开才能启用计划。

信息注释如果任务中的所有数据集都是非具体化的，那么就没有可运行的内容了，因为转换是用视图动态执行的。您仍然可以为满足计划条件时运行的非具体化转换任务创建计划。该任务将立即完成，这会触发下游任务，例如数据集市。这允许您构建一个基于事件的管道计划，该计划包括非具体化的转换，而不会中断管道流。

### 基于时间的计划

无论何时更新不同的输入源，都可以使用基于时间的计划来运行任务。

* 在运行数据任务中选择在特定时间。

您可以设置每小时、每天、每周或每月计划。

### 基于事件的计划

当输入数据任务完成运行时，可以使用基于事件的计划来运行任务。

* 在运行数据任务中选择特定事件发生时。

您可以选择是否要在任何输入任务成功完成时运行该任务，或在任何选择的输入任务已成功完成时执行该任务。

信息注释如果触发计划时正在运行任何输入任务或下游任务，则该任务将不会运行。将跳过该任务，直到下一次计划运行。

## 监视转换任务

您可以通过单击监视来监视转换任务的状态和进度。

有关更多信息，请参阅[监视单个数据任务](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Monitoring-data-tasks.htm)。

## 重新加载数据

如果数据具体化为物理表，则可以手动重新加载表。当一个或多个表出现问题时，这很有用。

信息注释如果数据集未具体化，则必须在上游数据任务中重新加载源数据集以刷新数据。

1. 打开数据任务，然后选择监视器选项卡。

2. 选择要重新加载的表。

3. 单击重新加载表。

下次运行任务时将进行重新加载。根据每个数据集的历史设置和转换类型，重新加载过程的行为有所不同。这意味着数据任务中的数据集之间的重新加载过程可能不同。

* 数据集转换是通过截断和加载来重新加载的。

* SQL 转换和转换流可以通过截断和加载，或者通过比较和应用来重新加载。最好的做法是进行比较和应用。

  [基于 SQL 转换或转换流重新加载数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Transformations.htm#Reloadin)

通过单击取消重新加载，可以取消正在等待重新加载的表的重新加载。这不会影响已经重新加载的表，并且当前正在运行的重新加载将完成。

将重新加载下游任务以应用更改并避免回溯。

重新加载转换数据任务后的下游影响

重新加载转换数据任务后的下游影响

重新加载转换数据任务后的下游影响 ![转换重新加载下游影响](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Resources/Images/qcdi_reload_downstream_transform.png)

下游的影响取决于执行的重新加载操作的类型和直接下游数据集的类型。标准处理意味着数据集将使用特定数据集的配置方法对数据进行反应和处理。

示例： 通过截断和加载重新加载数据集

* 如果下一个数据集使用数据集转换，它将在下一次执行时通过截断和加载重新加载。

* 如果下一个数据集是 SQL 转换或转换流，则将使用比较和应用重新加载它。

### 重新加载没有历史记录的数据集

在这种情况下，没有历史可供考虑。为了减少对目标的处理，通过以下方式执行重新加载：

1. 截断表。

2. 正在从上游数据任务加载当前数据。

将重新加载下游任务以应用更改。

### 在启用历史记录的情况下重新加载数据集

重新加载由以下人员执行：

1. 截断当前表、先前表和更改表。

2. 从上游数据任务加载数据，包括以前的表。

### 基于 SQL 转换或转换流重新加载数据集

* 截断并重新加载

  信息注释此选项可能会导致历史记录丢失。

  1. 截断当前表和更改表。

  2. 运行查询并将其加载到当前表中。

* 重新加载并比较

  1. 运行查询并将其与当前表进行比较。

  2. 添加更改。

信息注释当基于 SQL 转换或转换流的数据集因上游任务重新加载而重新加载时，总是通过比较和应用来重新加载。如果要截断并重新加载，必须为这些表发布特定的重新加载。在这种情况下，您还必须考虑对下游表格的影响。

## 删除任务

如果数据任务未运行，并且同一项目中没有下游任务依赖项，则可以删除该数据任务。

* 在项目的管道项目视图中，单击任务上的the 删除 icon，然后选择。

此任务创建的工件（表和视图）也将被删除，除非您选择保留它们。

信息注释请记住，您保留的工件将不再由该任务更新。

## 查看任务信息

点击菜单栏上的 the 信息 icon 以查看任务信息，例如：

* 所有者

* 空间

* 数据平台

* 项目 ID

* 数据任务运行时 ID

## 转换设置

可以设置转换数据任务的特性。

* 单击设置。

警告注释如果任务已经运行，则更改运行时设置以外的设置需要重新创建数据集。

### 一般设置

* 数据库

  要在数据源中使用的数据库。

* 任务模式

  可以更改数据任务模式的名称。默认名称是任务的名称。

* 内部架构

  可以更改内部存储模式的名称。默认名称是附加“\_\_internal”的任务名称。

* 模式名称的默认大写

  您可以为所有架构名称设置默认大小写。如果您的数据库配置为强制大写，则此选项将无效。

* 所有表格和视图的前缀

  可以为使用此任务创建的所有表和视图设置前缀。

  信息注释如果要在多个数据任务中使用数据库架构，则必须使用唯一的前缀。

* 具体化

  您可以选择仅创建即时执行转换的视图（非实体化），或者同时创建表和视图（实体化）。

* 历史数据存储（类型 2）

  您可以保留历史更改数据，以便于在特定时间点重新创建数据。您可以使用历史视图和实时历史视图查看历史数据。

* 发布至目录

  选择此选项可将此版本的数据作为数据集发布到目录。目录内容将在下次准备此任务时更新。

  有关目录的更多信息，请参阅[通过目录工具理解您的数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/Catalog/catalog-overview.htm)。

### 运行时设置

* 平行执行

  您可以将满负载的最大连接数设置为 1 到 5 之间的数字。

* 仓库

  云数据仓库的名称。

### 查看类型设置

“视图”类型设置仅适用于 Snowflake。

* 标准视图

  在大多数情况下使用标准视图。

* Snowflake 安全视图

  将 Snowflake 安全视图用于为数据隐私或敏感信息保护指定的视图，例如为限制对不应向基础表的所有用户公开的敏感数据的访问而创建的视图。

  信息注释Snowflake 安全视图的执行速度可能比标准视图慢。

### 表格类型设置

这些设置仅在以 Snowflake 为数据平台的项目中可用。

* 表类型

  您可以选择使用哪种表格类型：

  * Snowflake 表格

  * Snowflake-托管 Iceberg 表格

    您必须在 Snowflake 外部卷中设置外部卷的默认名称。

* 要使用的云存储文件夹

  选择将数据放置到暂存区时要使用的文件夹。

  * 默认文件夹

    这将创建具有该默认名称的文件夹：&lt;project name&gt;/&lt;data task name&gt;。

  * 根文件夹

    将数据存储在存储的根文件夹中。

  * 文件夹

    指定要使用的文件夹名称。

* 与 Snowflake 开放目录同步

  启用此选项可让 Snowflake 开放目录管理云文件存储中的文件。

## 最佳实践

* 如果已添加事实和维度，则无法更改数据集市中数据集的源。如果您想灵活，可以添加一个带有非物化视图的前置转换任务，该任务可用于更改源，并为所有源任务提供一个模型。

## 限制和考虑事项

* 选择非具体化选项时，无法更改转换数据任务中的数据类型。

* 字段级世系不适用于在 SQL 转换或转换流中创建的数据集。

  信息注释本限制仅适用于 Qlik Cloud 政府。不支持使用 添加到目标 从设置为 Qlik 开放式湖空间仅追加 的 镜像 任务读取数据。作为一种变通方法，您可以使用 SQL 转换或转换流读取数据。

相关学习内容：

* [使用 Qlik Cloud 数据集成来载入和转换数据](https://help.qlik.com/lnk/Qlik_cloud_data_integration_onboard_transform)

## 了解详情

* [使用 Qlik Cloud 数据集成来载入和转换数据](https://help.qlik.com/lnk/Qlik_cloud_data_integration_onboard_transform)