从数据源登陆数据
载入时传输数据的第一步是登陆数据。这涉及将数据从数据源传输到登陆区。
您可以通过源连接从多个数据源登陆数据。
登陆区在您创建项目时定义。
-
Qlik Cloud(通过 Amazon S3)
当您将数据登陆到 Qlik Cloud(通过 Amazon S3)时,您可以使用它来生成 QVD 表,以便在 Qlik Cloud 中进行分析。
-
云数据仓库
当您将数据登陆到云数据仓库(例如 Snowflake 或 Azure Synapse Analytics)时,您可以将表存储在同一个云数据仓库中。
-
Qlik Open Lakehouse
当您将数据登陆到 Qlik Open Lakehouse 时,您的数据将以 Iceberg 开放表格式存储,并可以镜像到您的云数据仓库。
您还可以将数据登陆到湖仓一体,其中数据登陆到由 Snowflake 管理的云文件存储中。有关更多信息,请参阅 将数据登陆到 Lakehouse。
创建并配置登陆数据任务
这描述了如何创建登陆数据任务。创建数据管道的最快方法是载入数据,这将创建一个登陆数据任务和一个存储数据任务,准备好进行准备和运行。有关更多信息,请参阅 将数据引入数据仓库。
-
在您的项目中,单击 创建 并选择 登陆数据。
-
在 登陆数据 对话框中,输入数据任务的名称和描述。
选择 打开 以在创建登陆数据任务时将其打开。
单击 创建。
-
单击 选择源数据。
-
选择到源数据的连接,然后单击 下一步。
您可以使用左侧面板中的过滤器,按源类型、空间和所有者过滤连接列表。
如果您还没有到源数据的连接,则需要先通过单击 添加连接 来创建一个。
有关设置到受支持源的连接的更多信息,请参阅 设置与数据源的连接。
信息注释在下一步中选择表后,将无法将源连接从本地数据源更改为云数据源,反之亦然。您只能将连接更改为相同类型的另一个数据源。 -
选择要包含在数据任务中的数据集。选择对话框因您连接的源类型而异。
完成选择表后,单击 保存。
将显示 数据集。
-
您可以更改登陆的设置。这不是必需的。
-
单击 设置。
有关设置的更多信息,请参阅 登陆设置。
-
-
您现在可以预览所选数据资产表的结构和元数据。这包括所有明确列出的表,以及与选择规则匹配的表。
如果您想从数据源添加更多表,请单击 选择源数据。
-
您可以对数据集执行基本转换,例如过滤数据或添加列。这不是必需的。
有关更多信息,请参阅 管理数据集。
-
添加所需的转换后,您可以通过单击 验证数据集 来验证数据集。如果验证发现错误,请在继续之前修复错误。
有关更多信息,请参阅 验证和调整数据集。
-
准备就绪后,单击 准备 以对数据任务进行编目并准备执行。
您可以在屏幕下方的 准备进度 下关注进度。
-
当数据任务准备就绪,并且您准备好开始复制数据时,单击 运行。
复制现在应该开始,您可以在 监控 中查看进度。有关更多信息,请参阅 监控单个数据任务。
从数据库中选择数据
可以选择特定的表格或视图,或使用选择规则包括或排除表格组。
使用 % 作为通配符来定义架构和表的选择条件。
-
%.% 定义所有架构中的所有表。
-
Public.% 定义所有架构 Public 中的所有表。
选择条件根据您的选择提供预览。
您现在可以:
-
根据选择条件创建规则以包含或排除一组表。
单击从选择标准添加规则以创建规则,然后选择包含或排除。
您可以在选择规则下查看规则。
-
选择一个或多个数据集,然后单击添加选定的数据集。
您可以在显式选择的数据集下查看添加的数据集。
选择规则仅适用于当前的表和视图集,而不适用于将来添加的表和视图。
使用 变更数据捕获 (CDC) 运行登陆任务
您可以在登陆任务准备就绪时运行它。这将启动复制,将数据从本地数据源传输到登陆区。
-
单击 运行 以开始登陆数据。
复制现在应该开始,数据任务的状态将为 正在运行。首先,复制完整的数据源,然后跟踪更改。这意味着更改会被持续跟踪并在发现时传输。这使登陆区中的登陆数据保持最新。
在 Qlik Talend Data Integration 主页中,您可以查看状态、登陆数据更新的日期和时间,以及出错的表数。您还可以打开数据任务并选择 表 选项卡以查看表的基本元数据信息。
您可以通过打开 监控 选项卡来详细监控进度。有关更多信息,请参阅 监控单个数据任务。
当所有表都加载完毕并处理了第一组更改时,数据任务卡上的 数据更新至 表示截至该时间的源更改在数据任务中可用。
重新加载表
您可以从源重新加载数据。
重新加载单个表
您可以手动重新加载特定表,而不会干扰变更数据捕获。当一个或多个表存在 CDC 问题时,这很有用。
-
打开登陆数据任务并选择 监控 选项卡。
-
选择要重新加载的表。
-
单击 重新加载表。
如果您无法通过重新加载表来解决问题,或者如果它们影响整个任务,则可以改为将所有表重新加载到目标。这将重新启动变更数据捕获。
将所有表重新加载到目标
如果您遇到无法通过重新加载特定表来解决的 CDC 问题,您可以将所有表重新加载到目标。问题的示例包括丢失事件、由源数据库重组引起的问题或读取源数据库事件时失败。
- 停止数据任务和所有使用它的任务。
-
打开数据任务,然后选择监视器选项卡。
-
点击 ...,然后重新加载目标。
这将使用 Drop-Create 将所有表重新加载到目标,并将从现在起重新启动所有更改数据捕获。
-
消耗登陆数据任务的存储任务将通过比较重新加载,并在下次运行时应用以保持同步。现有历史将被保留。类型 2 历史记录将更新,以反映执行重新加载和比较进程后的变化。
类型 2 历史记录中的起始日期的时间戳将反映重新加载日期,而不一定是源中发生更改的日期。
-
在重新加载目标操作期间以及在存储同步之前,存储实时视图将不可靠。存储将在以下情况下完全同步:
-
使用比较和应用重新加载所有表,
-
每个表执行一个更改周期。
-
使用 重新加载并比较 运行登陆数据任务
您可以在登陆数据任务准备就绪时使用它来复制数据。
-
单击 运行 以启动满负载。
数据现在将开始被复制,数据任务的状态将为 正在运行。当完整的数据源被复制后,状态为 已完成。
在 Qlik Talend Data Integration 主页中,您可以查看状态、登陆数据更新的日期和时间,以及出错的表数。您还可以打开数据任务并选择 表 选项卡以查看表的基本元数据信息。
您可以通过打开 监控 选项卡来详细监控进度。有关更多信息,请参阅 监控单个数据任务。
当所有表都加载完毕时,数据任务卡上的 数据更新至 表示截至该时间的源更改在数据资产中可用。但是,数据任务的某些表可能会更新到较晚的时间,具体取决于它们开始加载的时间。这意味着无法保证数据一致性。例如,如果加载在 08:00 开始并耗时 4 小时,则加载完成时 数据更新至 将显示 08:00。但是,在 11:30 开始重新加载的表将包含在 08:00 到 11:30 之间发生的源更改。
数据更新至 仅反映成功加载的表。它不指示任何关于重新加载失败的表的信息。在云目标中,如果重新加载完成且所有表都出错,则该字段将为空。
使用 重新加载并比较 时重新加载数据
当您使用 重新加载并比较 作为更新方法时,您需要重新加载数据以使其与数据源保持最新。
-
单击 重新加载 以执行所有表的手动重新加载。
-
设置计划的重新加载。
重新加载单个表
您可以手动重新加载特定表。当一个或多个表存在问题时,这很有用。
-
打开登陆数据任务并选择 监控 选项卡。
-
选择要重新加载的表。
-
单击 重新加载表。
- 此选项将在登陆任务至少运行一次后可用,并且仅在任务未运行时可用。
- 不支持元数据更改。如果源中存在元数据更改,它们会在重新加载数据时传播到登陆,但不会得到正确处理。这可能会导致消耗存储失败。
计划 重新加载并比较 登陆数据任务
如果您在数据任务的空间中具有 可操作 角色或 可编辑 角色,则可以为登陆数据任务计划定期重新加载。数据任务状态必须至少为 已准备,计划才能激活。
-
单击数据任务上的 ... 并选择 计划。
您可以设置基于时间的计划。
有关根据数据源类型和订阅层的最小调度间隔的信息,请参阅允许的最小调度间隔。
设置数据集的加载优先级
您可以通过为每个数据集指定加载优先级来控制数据任务中数据集的加载顺序。例如,如果您想先加载较小的数据集,然后再加载较大的数据集,这就很有用。
-
点击加载优先级。
-
为每个数据集选择加载优先级。
默认加载优先级为正常。数据集将按以下优先顺序加载:
-
最高
-
较高
-
高
-
正常
-
低
-
较低
-
最低
具有相同优先级的数据集不分先后加载。
-
-
单击确定。
登陆数据任务的操作
您可以从任务菜单对登陆数据任务执行以下操作。
-
打开
这将打开登陆数据任务。您可以查看表结构和有关数据任务的详细信息。
-
编辑
您可以编辑任务的名称和描述。
-
删除
您可以删除数据任务。
以下对象不会被删除:
-
登陆区中的数据
-
目标平台中的模式
-
-
运行
您可以运行数据任务以开始复制数据。
-
停止
您可以停止正在运行的数据任务的操作。登陆区不会使用更改的数据进行更新。
当您停止具有重新加载计划的满负载数据任务时,仅停止当前的重新加载。如果数据任务状态为 已停止 并且存在活动的重新加载计划,它将在下一个计划时间再次重新加载。您必须在 计划重新加载 中关闭重新加载计划。
-
重新加载
您可以在 重新加载并比较 更新模式下执行数据任务的手动重新加载。
- 准备
这为执行准备任务。这包括:
-
验证设计是否有效。
-
创建或更改物理表和视图以匹配设计。
-
生成数据任务的 SQL 代码。
-
创建或更改任务输出数据集的目录条目。
您可以在屏幕下方的 准备进度 下关注进度。
信息注释在准备任务之前,停止所有直接下游的任务。 -
-
重新创建表
这将从源重新创建数据集。
信息注释如果个别表存在问题,建议首先尝试重新加载表,而不是重新创建它们。重新创建表可能会导致历史数据丢失。如果存在中断更改,还必须准备使用重新创建的数据任务的下游数据任务,以重新加载数据。 -
计划
您可以为 满负载 模式下的登陆数据任务设置计划的重新加载。您可以设置可自定义的基于时间的计划。
您还可以打开或关闭计划的重新加载。
您必须在数据任务的空间上具有 可操作 角色才能计划重新加载。
-
存储数据
您可以创建一个使用此登陆数据任务中的数据的存储数据任务。
正在刷新元数据
您可以刷新任务中的元数据,以与任务的设计视图中源元数据的更改保持一致。对于使用 Metadata manager 的 SaaS 应用程序,必须先刷新 Metadata manager,然后才能刷新数据任务中的元数据。
-
您可以:
-
单击 ...,然后刷新元数据以刷新任务中所有数据集的元数据。
-
点击在数据集中的某个数据集上的 ...,然后刷新元数据以刷新单个数据集的元数据。
您可以在屏幕下部的刷新元数据下查看元数据刷新的状态。通过将光标悬停在
上,您可以看到元数据上次刷新的时间。
-
-
准备数据任务才能应用更改。
准备好数据任务并应用更改后,将从刷新元数据中删除这些更改。
您必须准备使用此任务的存储任务来传播更改。
如果删除列,则会添加一个具有 Null 值的转换,以确保存储不会丢失历史数据。
刷新元数据的限制
-
如果数据类型和数据长度相同,则在此之前在同一时隙中具有删除列的重命名将被转换为删除列重命名。
示例:
之前:a b c d
之后:a c1 d
在这个例子中,b 被删除,c 被重命名为 c1,b 和 c 具有相同的数据类型和数据长度。
这将被识别为 b 到 c1 并删除 c 的重命名。
-
即使删除了最后一列,并且其前面的一列被重命名,也无法识别最后一列的重命名。
示例:
之前:a b c d
之后:a b c1
在这个例子中,d 被删除,c 被重命名为 c1。
这将被识别为 c 和 d 的删除,以及 c1 的添加。
-
假设在末尾添加了新列。如果在中间添加与下一列具有相同数据类型的列,则可能会将其解释为删除和重命名。
模式演变
模式演化允许您轻松检测多个数据源的结构更改,然后控制这些更改将如何应用于您的任务模式演化可用于检测对源数据模式所做的 DDL 更改。您还可以自动应用一些更改。
对于每种更改类型,您可以在任务设置的模式演变部分选择如何处理更改。您可以应用更改、忽略更改、挂起表或停止任务处理。
您可以设置用于处理每种更改类型的 DDL 更改的操作。某些操作并不适用于所有更改类型。
-
应用于目标
自动应用更改。
-
忽略
忽略更改。
-
挂起表
挂起表。监视器将显示表格错误。
-
停止任务
停止任务处理。如果您想手动处理所有模式更改,这很有用。这也将停止调度,即不会执行计划运行。
支持以下更改:
-
添加列
-
重命名列
-
更改列数据类型
-
创建与选择模式匹配的表
如果您使用 选择规则 添加与模式匹配的数据集,则将检测并添加符合该模式的新表。
有关任务设置的更多信息,请参阅 模式演变
您还可以获取有关通过模式演变处理的更改的通知。有关更多信息,请参阅 设置操作更改通知。
模式演变的限制
模式演变有以下限制适用:
-
只有使用 CDC 作为更新方法时,才支持模式演变。
-
更改模式演变设置后,必须重新准备任务。
-
如果重新命名表,则不支持模式演变。在这种情况下,您必须在准备任务前刷新元数据。
-
如果您正在设计任务,则必须刷新浏览器才能接收模式演变更改。您可以设置通知,以便在更改时收到警报。
-
在登陆任务中,不支持删除列。删除列和添加列会导致表格错误。
-
在登陆任务中,删除表操作不会将表丢弃。如果删除一个表后再添加一个表,只会截断旧表,而不会添加新表。
-
并非所有目标都能更改列的长度,这取决于目标数据库的支持情况。
-
如果更改了列名,使用该列定义的显式转换将不会生效,因为这些转换是基于列名的。
-
刷新元数据的限制也适用于模式演变。
-
如果任务包含尚未准备好的设计更改,并且在任务运行时检测到源架构演变更改,则任务将停止以避免冲突。准备待定设计更改并再次运行任务。
捕获 DDL 更改时,会受到以下限制:
-
当源数据库中发生一系列快速操作时(例如,DDL > DML > 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 精确度列的修改。
处理未自动应用的更改
这描述了如何处理无法应用于目标的更改,即操作为忽略、挂起或停止任务。
| DDL 更改 | 实施更改 | 保留当前状态 |
|---|---|---|
| 添加列 | 刷新元数据,准备任务,然后运行任务。 | 无需操作 |
| 创建表 | 刷新元数据,准备任务,然后运行任务。 | 无需操作 |
| 更改列数据类型 |
检查限制。如果没有适用的限制: 刷新元数据,准备任务,然后运行任务。 |
并非总是支持保留当前状态。可能的解决方法:
|
| 重命名表 |
检查限制。如果没有适用的限制: 准备任务,然后运行任务。 |
定义到旧名称的显式重命名规则。 |
| 重命名列 |
检查限制。如果没有适用的限制: 刷新元数据,准备任务,然后运行任务。 |
刷新元数据,然后定义到旧名称的显式重命名规则。 |
删除列
如果您删除由启用了历史记录的存储数据任务使用的列,则需要按照以下步骤保留历史记录并避免可能的数据丢失。
-
停止登陆数据任务。
-
运行存储数据任务以确保读取所有登陆数据。
-
在登陆中删除该列。
-
运行登陆数据任务。
-
在存储中,添加带有默认表达式(Null 或默认值)的列,或删除该列。
查看任务信息
点击菜单栏上的 以查看任务信息,例如:
-
所有者
-
空间
-
数据平台
-
项目 ID
-
数据任务运行时 ID
更改源连接或数据网关
如果您更改源连接或源数据网关,则必须重新创建所有表。
登陆区的维护
不支持自动清理登陆区。这可能会影响性能。
我们建议您在登陆区中手动清理旧的满负载数据。
-
Qlik Cloud(通过 Amazon S3)
如果有多个满负载数据文件夹,您可以删除除最新文件夹之外的所有文件夹。您还可以删除已处理的更改数据分区。
-
云数据仓库
您可以删除已处理的满负载和更改表记录。
建议
-
如果源表中的主键可以更新,请在 更改处理调整 中启用 更新主键列时删除并插入 选项。
限制
-
不支持复制长度超过 8000 字节的 varchar 数据或长度超过 4000 字节的 Nvarchar 数据。
-
不支持对移动的列更改可空性,无论是直接更改还是使用转换规则。但是,在任务中创建的新列默认可为空。
-
类型为 CLOB 和 BLOB 的源列将默认设置为可为空,即使在源中标记为不可为空。您可以将其更改为不可为空,但随后您需要添加一个表达式以添加非空值,以防它从源到达时为空。这可能发生在已删除的记录上。
转换受以下限制:
- 语序为从右向左的语言的列不支持转换。
-
无法对名称中包含特殊字符(例如 #、\、/、-)的列执行转换。
- LOB/CLOB 数据类型唯一支持的转换是删除目标上的列。
- 不支持使用转换重命名列,然后添加同名的新列。
按钮指示。