# 使用标准、高级或企业订阅将在数据湖中登陆数据

您可以设置在数据湖中登陆数据任务，将数据登陆到以下目标：

* Amazon S3

  有关配置与 AmazonS3 的连接的信息，请参阅[Amazon S3](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/aws-s3-target.htm#Using2)。

* Azure Data Lake Storage

  有关配置与 Azure 数据湖存储的连接的信息，请参阅[Azure Data Lake Storage](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/adls-target.htm#top)。

* Google Cloud Storage

  有关配置与 Google Cloud Storage 的连接的信息，请参阅[Google Cloud Storage](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/TargetConnections/google-storage-target.htm#Using)。

提示注释尽管您可以在任务设置向导中配置您的源和目标连接在数据湖中登陆数据设置，但为了简化设置过程，建议您在创建任务之前进行此操作。

有关配置与数据源的连接的信息，请参阅[设置与数据源的连接](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/connecting-data-2.htm)

要设置数据湖登陆任务，请执行以下操作：

1. 在数据集成 &gt; 项目中，单击新建 &gt; 项目。

2. 在新建项目对话框中，执行以下操作：

   1. 为您的项目提供名称。

   2. 选择要在其中创建项目的空间。

   3. 任选地，提供描述。

   4. 选择 Replication 作为用例。

   5. 如果要创建一个空项目而不配置任何设置，请清除打开复选框（可选）。

   6. 单击创建。

      将出现以下情况之一：

      * 如果选择了新建项目对话框中的打开复选框（默认值），则项目将打开。
      * 如果清除了新建项目对话框中的打开复选框，则该项目将添加到项目列表中。您可以稍后通过从项目的 菜单中选择打开the More icon来打开项目。

3. 项目打开后，单击登陆数据湖中的数据。

   登陆数据湖中的数据向导打开。

4. 在常规选项卡中，指定数据湖平台任务的名称和说明。然后，单击下一步。

   信息注释不支持包含斜杠 (/) 或反斜杠 (\) 字符的名称。

5. 在选择源连接选项卡中，选择到源数据的连接。从操作列中的菜单中选择编辑，可以选择编辑连接设置。

   信息注释若在任务已经准备好后更改源连接或源数据网关，则必须[重新创建所有数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm#:~:text=the%20storage%20task.-,Recreating%20datasets,-You%20can%20recreate)。

   如果您还没有到源数据的连接，则需要先创建一个，方法是单击选项卡右上角的创建连接。

   您可以使用左侧的筛选器筛选连接列表。可以根据源类型、网关、空间和所有者筛选连接。连接列表上方的所有筛选器按钮显示当前筛选器的数量。您可以使用此按钮关闭或打开左侧的筛选器面板。当前活动的筛选器也显示在可用连接列表的上方。

   您也可以从右侧的下拉列表中选择上次修改时间、上次创建时间或按字母数字顺序来对列表进行排序。单击列表右侧的箭头可以更改排序顺序。

   选择数据源连接后，可以选择单击选项卡右上角的测试连接（推荐），然后单击下一步。

6. 在选择数据集选项卡中，选择要包含在数据湖登陆任务中的表和/或视图。您还可以使用通配符并创建选择规则，如[从数据库选择数据](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Landing/Landing-data-data-sources.htm#Selectin)中所述。

   信息注释不支持模式名称或包含斜杠 (/) 或反斜杠 (\) 字符的表名称。

7. 在选择目标连接选项卡中，从可用连接列表中选择目标，然后单击下一步。在功能方面，该选项卡与前面描述的选择源连接选项卡相同。

   信息注释若在任务已经准备好后更改目标连接，则必须[重新创建所有数据集](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Managing-datasets.htm#:~:text=the%20storage%20task.-,Recreating%20datasets,-You%20can%20recreate)。

8. 在设置选项卡中，可以选择更改以下设置，然后单击下一步。

   更新方法：

   * 变更数据捕获 (CDC) 使用更改表： 数据湖登陆任务从满负载开始（在此期间，所有选定的表都将加载到目标）。然后使用 CDC（更改数据捕获）技术使目标数据保持最新。

     信息注释不支持 DDL 操作的 CDC（更改数据捕获）。

     使用 数据移动网关 时，除非使用 SaaS 应用程序源，否则会几乎实时地从源捕获更改。在不使用 数据移动网关 或使用 SaaS 应用程序源的情况下工作时，会根据调度程序设置捕获更改。有关更多信息，请参阅[Scheduling tasks](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Deploying/Scheduling-tasks.htm)。

   * 重新加载： 将数据从选定的源表满负载到目标平台，并在必要时创建目标表。任务启动时会自动进行满负载，但也可以手动执行或根据需要安排定期进行。

     信息注释使用 SaaS 应用程序连接器时，此设置不可用。

   信息注释

   当更改数据捕获 (CDC)是更新方法时，并且您的数据源：

   * 不是一个 SaaS 应用程序

   * 包含支持 CDC 的数据集和仅支持重新加载的数据集（例如视图）

   将创建两个数据管道。将为支持 CDC 的表创建一个管道，并为仅支持 重新加载 的数据集创建另一个管道。

   要使用的文件夹

   请根据您希望将文件写入哪个存储段文件夹，选择以下选项之一：

   * 默认文件夹

     默认文件夹格式为 &lt;您的项目名称&gt;/&lt;您的任务名称&gt;

   * 根文件夹

     文件将写入根存储段文件夹。

   * 文件夹

     指定一个文件夹名称。如果该文件夹尚不存在，则会在数据任务期间创建该文件夹。

     信息注释 文件夹名称不能包含特殊字符（例如 @、#、! 等）。

   复制计划程序

   您可以安排从数据源捕获更改的频率，并设置开始日期和时间。任务设置向导允许您设置基本的调度频率。完成任务设置后，提供了额外的计划选项。

   有关所有调度选项的说明，请参阅[Scheduling tasks](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Deploying/Scheduling-tasks.htm)。

9. 在摘要选项卡中，将显示数据管道的可视化信息。选择是打开＜name＞任务还是什么都不做。然后单击创建。

   根据您的选择，将打开任务或显示项目列表。

10. 如果选择打开任务，数据集选项卡将显示所选数据资产表的结构和元数据。这包括所有显式列出的表以及与选择规则匹配的表。

    如果要从数据源中添加更多表，请单击选择源数据。

11. 可选择如 [云存储目标的设置](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/landing-datalakes-settings.htm) 中所述更改任务设置。

12. 您可以对数据集执行转换、筛选数据或添加列。

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

13. 添加所需的转换后，可以通过单击验证数据集来验证数据集。如果验证失败，请先解决错误，然后再继续。

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

14. 准备好后，单击准备对登陆任务进行编目并准备好执行。

15. 准备好数据任务后，单击运行。

16. 数据湖登陆任务现在应该开始了。您可以在监视器视图中监视其进度。有关更多信息，请参阅[监视单个数据任务](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Monitoring-data-tasks.htm#Monitori)

## 设置数据集的加载优先级

您可以通过为每个数据集指定加载优先级来控制数据任务中数据集的加载顺序。例如，如果您想先加载较小的数据集，然后再加载较大的数据集，这就很有用。

1. 点击加载优先级。

2. 为每个数据集选择加载优先级。

   默认加载优先级为正常。数据集将按以下优先顺序加载：

   * 最高

   * 较高

   * 高

   * 正常

   * 低

   * 较低

   * 最低

   具有相同优先级的数据集不分先后加载。

3. 单击确定。

信息注释来自 SaaS 应用程序源的数据集可能包含加载顺序依赖关系。设置负载优先级时应考虑这一点。

## 模式演变

模式演化允许您轻松检测多个数据源的结构更改，然后控制这些更改将如何应用于您的任务。模式演化可用于检测对源数据模式所做的 DDL 更改。您还可以自动应用一些更改。

信息注释模式演化不适用于 Qlik Talend Cloud Starter 订阅。当使用 SaaS 应用程序连接器时，仅支持数据类型更改。

对于每种更改类型，您可以在任务设置的模式演变部分选择如何处理更改。您可以应用更改、忽略更改、挂起表或停止任务处理。

您可以设置用于处理每种更改类型的 DDL 更改的操作。某些操作并不适用于所有更改类型。

* 应用于目标

  自动应用更改。

* 忽略

  忽略更改。

* 挂起表

  挂起表。监视器将显示表格错误。

* 停止任务

  停止任务处理。如果您想手动处理所有架构更改，这很有用。这也将停止调度，即不会执行计划运行。

支持以下更改：

* 添加列

* 重命名列

* 更改列数据类型

* 添加符合选择模式的表格

  如果使用选择规则添加与模式匹配的数据集，则将检测并添加符合模式的新表。

有关任务设置的更多信息，请参阅[自动模式演变](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Replicating/landing-datalakes-settings.htm#Schema)

您还可以获得有关使用模式演进处理的变更的通知。有关更多信息，请参阅[设置操作更改通知](https://help.qlik.com/zh-CN/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Introduction/Notifications.htm)。

### 模式演变的限制

模式演变有以下限制适用：

* 只有使用 CDC 作为更新方法时，才支持模式演变。

* 更改模式演变设置后，必须重新准备任务。

* 如果重新命名表，则不支持模式演变。在这种情况下，您必须在准备任务前刷新元数据。

* 如果您正在设计任务，则必须刷新浏览器才能接收模式演变更改。您可以设置通知，以便在更改时收到警报。

* 在登陆任务中，不支持删除列。删除列和添加列会导致表格错误。

* 在登陆任务中，删除表操作不会将表丢弃。如果删除一个表后再添加一个表，只会截断旧表，而不会添加新表。

* 并非所有目标都能更改列的长度，这取决于目标数据库的支持情况。

* 如果更改了列名，使用该列定义的显式转换将不会生效，因为这些转换是基于列名的。

* 刷新元数据的限制也适用于模式演变。

* 如果任务包含尚未准备好的设计更改，并且在任务运行时检测到源架构演变更改，则任务将停止以避免冲突。准备待定设计更改并再次运行任务。

捕获 DDL 更改时，会受到以下限制：

* 当源数据库中发生一系列快速操作时（例如，DDL &gt; DML &gt; DDL），Qlik Talend Data Integration 可能会以错误的顺序解析日志，导致数据丢失或行为不可预测。为了尽量减少这种情况发生的可能性，最佳做法是等待更改应用于目标，然后再执行下一个操作。

  例如，在变更捕获过程中，如果源表被快速连续重命名多次（第二次操作将其重命名回原始名称），则可能会遇到该表已存在于目标数据库中的错误。

* 如果更改任务中使用的表的名称，然后停止任务，则在任务恢复后 Qlik Talend Data Integration 将不会捕获对该表所做的任何更改。

* 不支持在任务停止时重命名源表。

* 不支持重新分配表的主键列（因此不会写入 DDL 历史控制表）。

* 当一列的数据类型发生变化，并且*在*任务停止时重命名了（相同的）列时，DDL 更改将在任务恢复时在 DDL 历史控制表中显示为“删除列”，然后显示为“添加列”。请注意，延迟延长也可能导致相同的行为。

* 在任务停止时对源执行的 CREATE TABLE 操作将在任务恢复时应用于目标，但不会在 DDL 历史控制表中记录为 DDL。

* 与元数据更改相关的操作（如 ALTER TABLE、reorg、重建聚集索引等）如果在以下情况下执行，可能会导致不可预测的行为：

  * 满负载期间

    -或者-

  * 在开始处理更改自时间戳和当前时间之间（即用户在高级运行选项对话框中单击确定的时刻）。

    示例：

    IF：

    指定的开始处理更改自时间为上午 10:00。

    AND：

    上午 10:10 时，雇员表中添加了名为年龄的列。

    AND：

    上午 10:15，用户在高级运行选项对话框中单击确定。

    THEN：

    10:00 至 10:10 之间发生的更改可能会导致 CDC 错误。

  信息注释

  在上述任何情况下，必须重新加载受影响的表，以便数据正确已移动到目标。

* DDL 语句 `ALTER TABLE ADD/MODIFY <column> <data_type> DEFAULT <>` 不会将默认值复制到目标，并且新的/修改的列设置为 NULL。请注意，即使过去执行了添加/修改列的 DDL，也可能发生这种情况。如果新的/修改的列可以为空，则源端点会在记录 DDL 本身之前更新所有表行。因此，Qlik Talend Data Integration 会捕获更改，但不会更新目标。由于新列/修改列被设置为 NULL，如果目标表没有主键/唯一索引，后续更新将生成 "零行受影响 "消息。

* 不会捕获对 TIMESTAMP 和 DATE 精确度列的修改。

## 更改网关或连接

更改目标或源连接，或源网关时，必须重新创建表。

## 查看任务信息

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

* 所有者

* 空间

* 数据平台

* 项目 ID

* 数据任务运行时 ID

## 登陆数据湖中数据时的限制和注意事项

转换受以下限制：

* 语序为从右向左的语言的列不支持转换。

* 无法对名称中包含特殊字符（例如 #、\、/、-）的列执行转换。

* LOB/CLOB 数据类型唯一支持的转换是删除目标上的列。

* 不支持使用转换重命名列，然后添加同名的新列。

移动的列不支持更改可空性，无论是直接更改还是使用转换规则。但是，默认情况下，任务中创建的新列可以为空。