复制设置
您可以配置数据复制任务的设置。
-
打开复制任务,然后单击工具栏中的设置 。
将打开设置:<Task-Name>对话框。下面描述了可用的设置。
常规
在此选项卡中,您可以更改复制模式、暂存设置(如果可用)、将更改应用到目标的模式以及发布设置。
复制模式
以下复制模式可用:
-
满负载:将选定源表中的数据加载到目标平台,并在必要时创建目标表。当任务启动时,满负载会自动发生,但如果需要,也可以手动执行。例如,如果需要复制视图的更新(CDC 期间不会捕获视图更新),或者从不支 持 CDC 的数据源进行复制,则需要手动满负载。
-
应用更改:使目标表更新对源表所做的任何更改。
-
存储更改:将对源表的更改存储在“更改表”中(每个源表一个)。
有关更多信息,请参阅存储更改。
使用 数据移动网关 时,几乎实时地从源捕获更改。当不使用 数据移动网关 工作时(例如,使用 Qlik Talend Cloud Starter 订阅或选择无时),将根据调度程序设置捕获更改。有关更多信息,请参阅复制设置。
如果您选择存储更改或应用更改,并且您的源数据包含不支持 CDC 的表或视图,则将创建两个数据管道。一个管道用于支持 CDC 的表,另一个管道用于仅支持满负载的所有其他表和视图。
加载方法
复制到 Snowflake 时,您可以选择以下加载方法之一:
-
批量加载(默认)
如果您选择批量加载,您将能够在数据上传选项卡中调整加载参数。
-
Snowpipe Streaming
信息注释仅当满足以下条件时,Snowpipe Streaming才可供选择:
- 启用了存储更改 复制模式,但未启用应用更改。
- Snowflake 连接器中的身份验证机制设置为密钥对。
- 如果您使用的是 数据移动网关,则需要 2024.11.45 或更高版本。
如果您选择Snowpipe Streaming,请确保您熟悉使用此方法时的限制和注意事项。此外,如果您选择Snowpipe Streaming,然后启用应用更改复制模式或禁用存储更改,加载方法将自动切换回批量加载。
选择Snowpipe Streaming而不是批量加载的主要原因是:
-
成本更低:由于 Snowpipe Streaming 不使用 Snowflake 仓库,因此运营成本应显著降低,尽管这取决于您的具体用例。
-
延迟更低:由于数据直接流式传输到目标表(而不是通过暂存),因此从数据源到目标的复制应该更快。
连接到暂存区
当复制到下面列出的数据仓库时,您需要设置一个暂存区域。数据在转移到仓库之前在暂存区进行处理和准备。
选择现有暂存区域,或单击新建以定义新的暂存区域,然后按照连接至云存储中的说明进行操作。
要编辑连接设置,请单击编辑。要测试连接(推荐),请单击测试连接。
有关哪些数据仓库支持哪些暂存区域的信息,请参阅目标平台用例和支持的版本中的支持作为暂存区列。
应用更改模式
使用以下方法之一将更改应用到目标表:
- 批量优化:这是默认设置。选择此选项后,将分批应用更改。进行预处理操作,以最有效的方式将事务分组为批。
- 事务性:选择此选项可以按照提交的顺序单独应用每个事务。在这种情况下,可以确保所有表都具有严格的引用完整性。
发布设置
-
发布到目录
选择此选项可将此版本的数据作为数据集发布到目录。下次准备此任务时,目录内容将更新。
有关目录的更多信息,请参阅 通过目录工具理解您的数据。
使用 数据移动网关 时的代理设置
-
使用 Data Movement gateway 时,通过代理连接到
使用 数据移动网关 时,您可以通过代理连接到目标平台和暂存平台(区域)。
有关配置 数据移动网关 以使用代理服务器的更多信息,请参阅 设置 Qlik Cloud 租户和代理服务器。
-
目标平台
信息注释使用 Snowflake 和 Databricks 时可用。 -
暂存平台
信息注释使用 Google BigQuery、Amazon Redshift、Microsoft Fabric 和 Databricks 时可用。
-
数据上传
仅当复制到数据仓库或 Kafka 目标时才会显示此选项卡。此外,此选项卡中的设置将根据所选目标而有所不同。
与所有数据仓库目标相关
最大文件大小
文件在关闭之前可以达到的最大大小。与并行执行选项结合使用时,较小的文件可能会上传得更快(取决于网络),并提高性能。然而,通常认为用小文件扰乱数据库是不好的做法。
仅与 Snowflake 目标相关
在常规 选项卡中,您可以选择是使用批量加载还是Snowpipe Streaming将数据加载到 Snowflake。选择Snowpipe Streaming时,将不会显示数据上传选项卡。选择批量加载时,以下设置将可用:
-
最大文件大小 (MB):与初始满负载和 CDC 相关。文件在加载到目标之前可以达到的最大大小。如果遇到性能问题,请尝试调整此参数。
-
批处理中要加载的文件数:仅与初始满负载相关。在单个批处理中要加载的文件数。如果遇到性能问题,请尝试调整此参数。
有关批量加载和Snowpipe Streaming加载方法的描述,请参阅 常规。
仅与 Kafka 目标相关
消息属性
压缩
(可选)选择一种可用的压缩方法(Snappy或Gzip)。默认值为无。
数据消息发布
选择以下将数据发布到选项之一:
- 特定主题:将数据发布到单个主题。键入主题名称或使用浏览按钮选择所需的主题。
-
每个表的单独主题:将数据发布到与源表名称对应的多个主题。
目标topic名称由源架构名称和源表名称组成,用句点分隔(例如,dbo.Employees)。目标topic名称的格式很重要,因为您需要提前准备这些topic。
如果主题不存在,请使用 auto.create.topics.enable=true 配置代理,以使数据任务能够在运行时创建主题。否则,任务将失败。
有关在数据集级别覆盖此设置的信息,请参阅 发布到 Kafka 时覆盖单个数据集的任务设置
消息键
选择可用选项之一。
-
主键列:对于每条消息,消息键将包含主键列的值。
当选择按消息键 作为分区策略时,由相同主键值组成的消息将写入同一分区。
-
架构和表名:对于每条消息,消息键将包含架构和表名的组合(例如,dbo+Employees)。
当选择按消息键作为分区策略时,由相同架构和表名组成的消息将写入同一分区。
- 无:创建没有消息键的消息。
有关在数据集级别覆盖此设置的信息,请参阅 发布到 Kafka 时覆盖单个数据集的任务设置
分区策略
选择随机或按消息键。如果选择随机,每条消息将写入随机选择的分区。如果选择按消息键,消息将根据所选的消息键 (如上所述)写入分区。
元数据消息发布
主题名称策略
第一个策略(架构和表名)是专有的 Qlik 策略,而其他三个是标准的 Confluent 主题名称策略。
选择一种可用的主题名称策略。
- 架构和表名(默认)
- 主题名称
- 记录名称
- 主题和记录名称
有关 Confluent 主题名称策略的更多信息,请参阅 Subject name strategy
主题兼容模式
从主题兼容模式下拉列表中选择以下兼容模式之一:
-
使用 Schema Registry 默认值:从 Schema Registry 服务器配置中检索兼容性级别。
-
向后 - 仅最新架构:新架构只能读取相应的数据以及由最新注册的架构生成的数据。
-
向后传递 - 所有以前的架构:新架构可以读取由所有以前注册的架构生成的数据。
-
向前 - 仅最新架构:最新注册的架构可以读取由新架构生成的数据。
-
向前传递 - 所有以前的架构:所有以前注册的架构都可以读取由新架构生成的数据。
-
完全 - 仅最新架构:新架构与最新注册的架构向后和向前兼容。
-
完全传递 - 所有以前的架构:新架构与所有以前注册的架构向后和向前兼容。
-
无
- 根据所选的主题名称策略,某些兼容模式可能不可用。
-
将消息发布到 Schema Registry 时,无论选择何种主题兼容模式,所有新创建的控制表主题的默认主题兼容模式都将为无。
如果您希望所选的主题兼容模式也应用于控制表,请将 Kafka 目标连接器中的 setNonCompatibilityForControlTables 内部参数设置为 false。
使用代理连接到 Confluent Schema Registry
仅当发布到 Confluent Schema Registry 时才支持此选项。
如果您的 数据移动网关 配置为使用代理服务器,请打开此选项。
消息属性
您可以指定将覆盖默认消息属性的自定义消息属性。如果使用者应用程序需要以特定格式处理消息,这将非常有用。
可以在任务和表级别定义自定义消息属性。当在任务和表级别都定义了属性时,为表定义的消息属性将优先于为任务定义的属性。
有关在数据集级别覆盖消息属性的信息,请参阅 发布到 Kafka 时覆盖单个数据集的任务设置
不支持分层结构化消息。
一般规则和使用指南
定义自定义消息时,务必考虑下面列出的规则和使用指南。
部分名称
适用以下命名规则:
- 部分名称必须以字符 a-z、A-Z 或 _(下划线)开头,然后可以后跟以下任何字符:a-z、A-Z、0-9、_
- 除了记录名称和键名称部分(不以斜杠结尾)之外,从部分名称中删除斜杠将展平关联部分的层次结构(请参阅下面的斜杠)。
- 除了记录名称和键名称之外的所有部分名称都可以删除(请参阅下面的删除)
-
数据名称和包含记录前数据部分名称不能同时删除
-
数据名称和包含记录前数据部分名称不能相同
UI 中的某些部分名称以斜杠结尾(例如 beforeData/)。斜杠的目的是维护消息中不同部分的层次结构。如果删除斜杠,将发生以下情况:
- 该部分的层次结构将被展平,导致部分名称从消息中删除
- 部分名称将作为实际元数据的前缀,直接添加或使用您附加到名称的分隔符(例如下划线)添加
使用斜杠指定 headers/ 时的数据消息示例:
"message":{
"data":{
"COL1": "159",
"COL2": "159"
},
"beforeData": null,
"headers": {
"operation": "INSERT",
"changeSequence": "2018100811484900000000233",
使用下划线而不是斜杠指定 headers_ 时的数据消息示例:
"message":{
"data":{
"COL1": "159",
"COL2": "159"
},
"beforeData": null,
"headers_operation": "INSERT",
"headers_changeSequence": "2018100811484900000000233",
从消息中删除部分名称将展平该部分的层次结构。这将导致该部分的所有数据直接显示在上一部分内容的下方。
带有 headers 部分名称的数据消息示例:
"message":{
"data":{
"COL1": "159",
"COL2": "159"
},
"headers": {
"operation": "INSERT",
"changeSequence": "2018100811484900000000233",
没有 headers 部分名称的数据消息示例:
"message":{
"data":{
"COL1": "159",
"COL2": "159"
},
"beforeData": null,
"operation": "INSERT",
"changeSequence": "2018100811484900000000233",
变量
您可以通过单击行末尾的
按钮将变量添加到名称中。以下变量可用:
- SERVER_NAME - 数据移动网关 服务器的主机名
- TARGET_TABLE_NAME - 表的名称
- TARGET_TABLE_OWNER - 表所有者
- TASK_NAME - 数据任务的名称
TARGET_TABLE_OWNER 变量不适用于记录名称和键名称选项(在下表中描述)。
定义自定义消息属性
要定义自定义消息格式,请打开使用自定义设置并如下表所述配置选项。
要恢复为默认消息属性,请关闭使用自定义设置。
| 选项 | 描述 |
|---|---|
|
打开时(默认),消息中将包含唯一标识符。这应该是一个由句点分隔的字符串。请注意,命名空间将包含在消息和消息键中。 示例: mycompany.queue.msg 默认名称: com.attunity.queue.msg.{{TASK_NAME}}.{{TARGET_TABLE_OWNER}}.{{TARGET_TABLE_NAME}} 控制表的默认名称: com.attunity.queue.msg.{{TARGET_TABLE_NAME}} 信息注释
无法通过 UI 更改默认控制表命名空间。但是,您可以按如下方式更改默认控制表命名空间:
|
|
|
记录名称 |
记录(消息)的名称。 默认名称: DataRecord |
|
数据名称 |
记录中包含的所有数据列。 默认名称: data/ |
|
包含标头 |
打开时(默认),标头列将包含在消息中。标头列提供有关源操作的附加信息。 有关更多信息,请参阅下面的包含以下标头。 |
|
包含标头命名空间 |
打开时(默认),标头列部分的唯一标识符将包含在消息中。这应该是一个由句点分隔的字符串。 示例: headers.queue.msg 默认名称: com.attunity.queue.msg |
|
标头名称 |
包含 Qlik 列标头的部分的名称。 默认名称: headers/ |
|
有关可用标头列的描述,请参阅 Qlik 帮助中的数据消息。 默认: 默认情况下包含所有列,但外部架构 ID列除外。 |
|
|
包含记录前数据 |
打开时(默认),UPDATE 之前和之后的数据都将包含在 UPDATE 消息中。 要仅在消息中包含 UPDATE 之后的数据,请关闭该选项。 默认名称: beforeData/ |
|
键名称 |
包含消息键的部分的名称。 默认名称: keyRecord 此选项仅在以下情况下适用:
|
其他设置
-
消息最大大小
在消息最大大小 字段中,指定代理配置为接收的消息的最大大小(message.max.bytes)。数据任务不会发送大于最大大小的消息。
元数据
基本
-
目标表架构
如果您不想使用源表架构(或者源数据库中没有架构),源表将复制到的目标上的架构。
信息注释复制到 Oracle 目标时,默认目标表架构为“system”。另请注意,如果将此字段留空(在这种情况下将使用源架构),则必须确保源架构已存在于目标上。否则,任务将失败。信息注释架构名称的最大允许长度为 128 个字符。
JSON 列映射
将兼容的源 JSON 列映射到目标上的 JSON 列
-
如果您使用 数据移动网关 访问数据源,则需要版本 2024.11.70 或更高版本。
-
仅支持 SaaS 应用程序预览连接器。
选中此选项后,源上的 JSON 列将自动映射到目标上的 JSON 列。
此选项的状态和可见性由以下因素决定:
-
新任务:如果源和目标都支持 JSON 数据类型,则此选项将默认启用。
-
现有任务:即使源和目标都支持 JSON 数据类型,此选项也将默认禁用。这是为了保持与下游流程(例如转换)的向后兼容性,这些流程期望目标数据采用 STRING 格式(这是旧版行为)。您可以禁用该选项,也可编辑下游进程以兼容 JSON 格式,然后启用该选项。
-
新建和现有任务:如果只有源支持 JSON 数据类型,此选项将不可见。如果稍后在目标中添加 JSON 支持,该选项将变为可见,但仍处于禁用状态。这是为了保持与下游流程(例如转换)的向后兼容性,这些流程期望目标数据为 STRING 格式(这是传统行为)。
LOB 设置
可用的 LOB 设置因所选复制目标而异。由于数据仓库目标不支持无限制的 LOB 列大小,因此在复制到数据仓库时此选项将不可用。
非数据仓库目标的 LOB 设置
- 不包含 LOB 列:如果您不希望复制源 LOB 列,请选择此项。
-
将 LOB 列大小限制为 (KB):这是默认设置。如果只需要复制小型 LOB,或者目标平台不支持无限制的 LOB 大小,请选择此选项。此字段的最大允许值为 102400 KB (100 MB)。
复制小型 LOB 时,此选项比不限制 LOB 列大小选项更有效,因为 LOB 是“内联”复制的,而不是通过从源“查找”复制的。在更改处理期间,小型 LOB 通常通过从源“查找”进行复制。
该限制适用于从源端点读取的 LOB 字节数。 对于 BLOB 列,目标 BLOB 大小将完全符合指定的限制。 对于 CLOB 和 NCLOB 列,如果源和目标 LOB 没有相同的字符集,则目标 LOB 大小可能与指定的限制不同。在这种情况下,数据任务将执行字符集转换,这可能会导致源和目标 LOB 大小之间存在差异。
由于限制 LOB 大小为的值以字节为单位,因此应根据以下公式计算大小:
- BLOB:最大 LOB 的长度。
- NCLOB:最长 TEXT 的长度(以字符为单位)乘以二(因为每个字符都作为双字节处理)。 如果数据包含 4 字节字符,则乘以四。
- CLOB:最长 TEXT 的长度(以字符为单位)(因为每个字符都作为 UTF8 字符处理)。 如果数据包含 4 字节字符,则乘以二。
信息注释- 任何大于指定大小的 LOB 都将被截断。
- 在从 Oracle 源进行更改处理期间,内联 BLOB 将内联复制。
- 对此设置的更改仅在重新加载现有表后才会影响它们。
-
不限制 LOB 列大小:选择此选项时,将复制 LOB 列,无论大小如何。
信息注释复制 LOB 列可能会影响性能。对于大型 LOB 列尤其如此,这需要复制任务从源表执行查找以检索源 LOB 值。-
当 LOB 大小小于以下值时进行优化:当您需要复制小型和大型 LOB,并且大多数 LOB 都是小型时,请选择此选项。
信息注释此选项仅支持以下源和目标:
-
源:Oracle、Microsoft SQL server、MySQL、PostgreSQL 和 IBM DB2 for LUW
-
目标: Oracle、Microsoft SQL Server、MySQL、PostgreSQL。
选择此选项时,在满负载期间,小型 LOB 将“内联”复制(这更有效),而大型 LOB 将通过从源表执行查找来复制。但是,在更改处理期间,小型和大型 LOB 都将通过从源表执行查找来复制。
信息注释选择此选项时,复制任务将检查所有 LOB 大小以确定哪些要“内联”传输。大于指定大小的 LOB 将使用完整 LOB 模式进行复制。
因此,如果您知道大多数 LOB 大于指定的设置,最好改用复制无限制的 LOB 列选项。
-
-
块大小 (KB):(可选)更改将数据复制到目标时要使用的 LOB 块的大小。默认块大小在大多数情况下应该足够了,但如果遇到性能问题,调整大小可能会提高性能。
信息注释对于某些数据库,在插入或更新数据时会发生数据类型验证。在这种情况下,如果数据大于指定的块大小,结构化数据类型(例如 XML、JSON、GEOGRAPHY 等)的复制可能会失败。
-
支持的数据仓库目标的 Lob 设置
-
包含 LOB 列并将列大小限制为 (KB):
您可以选择在任务中包含 LOB 列,并设置最大 LOB 大小。大于最大大小的 LOB 将被截断。
高级
控制表设置
-
控制表架构:如果您不希望在源架构(默认)或目标架构中创建控制表,请指定控制表的目标架构。
信息注释架构名称的最大允许长度为 128 个字符。 - 在表空间中创建目标控制表: 当目标复制目标是 Oracle 时,指定要在其中创建目标控制表的表空间。如果您没有在该字段中输入任何信息,那么表将在目标数据库的默认表空间中创建。
- 在表空间中为目标控制表创建索引:当复制目标是 Oracle 时,指定要在其中创建控制表索引的表空间。如果不在此字段中输入任何信息,则索引将在与控制表相同的表空间中创建。
- 复制历史记录时间段(分钟):复制历史记录 控制表中每个时间段的长度。默认值为 5 分钟。
控制表选择
选择要在目标平台上创建的控制表:
| 逻辑名称 | 目标中的名称 |
|---|---|
| 应用异常 | attrep_apply_exceptions |
| 复制状态 | attrep_status |
| 挂起的表 | attrep_suspended_tables |
| 复制历史记录 | attrep_history |
| DDL 历史记录 |
attrep_ddl_history DDL 历史记录表仅受以下目标平台的支持:
|
有关控制表的更多信息,请参阅 控制表。
满负载
基本
这些设置将在数据任务准备阶段以及每次重新加载表时应用。
如果目标表已存在:选择以下选项之一以确定应如何将数据加载到目标表:
仅当源端点支持此类操作时,删除或截断目标表的选项才相关。
-
删除并创建表:删除目标表并在其位置创建一个新表。
信息注释复制任务控制表不会被删除。但是,如果重新加载关联的任务,任何被删除的挂起表也将从 attrep_suspended_tables 控制表中删除。
-
加载前 TRUNCATE:截断数据而不影响目标表元数据。请注意,选择此选项时,启用满负载完成后创建主键或唯一索引选项将不起作用。
信息注释当 Microsoft Fabric 是目标平台时不受支持。 - 忽略:目标表的现有数据和元数据不会受到影响。新数据将添加到表中。
高级
性能调优
如果数据复制过慢,调整以下参数可能会提高性能。
- 最大表数:输入一次加载到目标的最大表数。默认值为5。
-
事务一致性超时(秒):输入复制任务在开始满负载操作之前应等待打开的事务关闭的秒数。默认值为600(10 分钟)。即使存在打开的事务,复制任务也会在达到超时值后开始满负载。
信息注释要复制在满负载开始时打开但仅在达到超时值之后才提交的事务,您需要重新加载目标表。 - 满负载期间的提交率:可以一起传输的最大事件数。默认值为10000。
满负载完成后
您可以将任务设置为在满负载完成后自动停止。如果您需要在任务的“应用更改”(即 CDC)阶段开始之前对目标表执行 DBA 操作,这将非常有用。
在满负载期间,对源表执行的任何 DML 操作都会被缓存。满负载完成后,缓存的更改将自动应用于目标表(前提是禁用了下面描述的应用缓存的更改之前/之后选项)。
- 创建主键或唯一索引:如果您希望将目标上的主键或唯一索引创建延迟到满负载完成之后,请选择此选项。
- 停止任务:
信息注释
在以下情况下,这些设置不可用:
- 从 SaaS 应用程序源复制(因为没有缓存的事件)
- 复制到数据仓库目标
-
应用缓存的更改之前:选择此选项可在满负载完成后停止任务。
-
应用缓存的更改之后:选择此选项可在任务中的所有表数据一致后立即停止任务。
信息注释将任务配置为在满负载完成后停止时,请注意以下事项:
- 任务不会在满负载完成的那一刻停止。它只有在捕获到第一批更改后才会停止(因为这是触发任务停止的条件)。这可能需要一段时间,具体取决于源数据库的更新频率。任务停止后,在恢复任务之前,更改不会应用于目标。
- 选择应用缓存的更改之前可能会影响性能,因为缓存的更改仅在最后一个表完成满负载之后才会应用于表(即使是那些已经完成满负载的表)。
- 选择此选项并且在满负载过程中(在“满负载并应用更改”任务中)对其中一个源表执行 DDL 时,复制任务将重新加载该表。这实际上意味着在任务停止之前,对源表执行的任何 DML 操作都将复制到目标。
对于初始加载
当从 SaaS 应用程序源移动数据时,您可以设置如何执行初始满负载:
| 使用缓存数据 |
此选项允许您使用在选择完整数据扫描的情况下生成元数据时读取的缓存数据。 这减少了 API 使用和配额方面的开销,因为已经从源读取数据。自初始数据扫描以来的任何更改都可以通过更改数据捕获 (CDC) 获取。 |
| 从数据源加载 |
此选项从数据源执行新加载。此选项在以下情况下很有用:
|
应用更改
仅当启用了应用更改复制模式时,这些设置才可用。
基本
选择要应用于目标的 DDL 更改类型
以下选项决定了在相应的源表上执行的 DDL 操作是否也会在目标表上执行。
-
删除表:选择此选项可在删除源表时删除目标表。
信息注释当 Kafka 是目标平台时不受支持。 -
截断表:选择此选项可在截断源表时截断目标表。
信息注释当 Microsoft Fabric 是目标平台时不受支持。 -
修改表:选择此选项可在修改源表时修改目标表。
信息注释当 Kafka 是目标平台时,不支持重命名表。
更改处理调优
-
同时将批处理更改应用于多个表:在应用来自多个源表的更改时,选择此选项可能会提高性能。
信息注释仅在以下情况下支持此选项:
- 应用更改模式设置为批处理优化。有关详细信息,请参阅 复制设置。
- 复制目标不是 MySQL、PostgreSQL、Oracle 和 Google BigQuery。
-
最大表数:同时应用批处理更改的最大表数。默认值为 5,最大值为 50,最小值为 2。
启用同时将批处理更改应用于多个表选项时,适用以下限制:
-
对于环境和表错误,任务错误处理策略默认值将保持不变,但对于数据错误和应用冲突错误的默认值将如下所示:
- 数据错误:
- 数据截断错误:将记录记录到异常表
- 其他数据错误:挂起表
- 应用冲突错误:
- 删除:忽略记录
插入:更新现有目标记录
信息注释这与 Snowflake 目标无关(因为 Snowflake 不支持主键)。- 更新:忽略记录
- 升级操作:
- 不支持数据错误和应用冲突的升级操作。
- 不支持 attrep_apply_exception 控制表。
- 对于数据错误:
- 将记录记录到异常表选项仅适用于数据截断错误。
- 没有忽略选项。
- 对于应用冲突:
- 将记录记录到异常表选项不可用。
- 忽略选项仅适用于未找到应用更新的记录应用冲突。
- 数据错误:
另请参阅:错误处理。
-
将每个更改处理语句应用的更改数限制为:要限制在单个更改处理语句中应用的更改数,请选中此复选框,然后可选择更改默认值。默认值为 10,000。
信息注释此选项仅支持以下目标:MySQL、PostgreSQL、Oracle 和 Google BigQuery。
高级
请参阅 更改处理调优。
存储更改
仅当启用了存储更改复制模式时,这些设置才可用。
基本
DDL 选项
选择以下选项之一以确定如何处理源表上的 DDL 操作:
- 应用于更改表:对源表的 DDL 操作(例如添加列)将仅应用于相应的更改表。
- 忽略:将忽略对源表的所有 DDL 操作。
高级
更新时
选择存储前映像和后映像以存储更新前数据和更新后数据。如果未选择,则仅存储更新后数据。
更改表创建
以下部分描述了在更改表中存储更改时可用的选项。
- 后缀:指定一个字符串作为所有更改表的后缀。默认值为 __ct。更改表名称是附加了后缀的目标表名称。例如,使用默认值时,更改表的名称将为 HR__ct。
- 标题列前缀:指定一个字符串作为所有更改表标题列的前缀。默认值为 header__。例如,使用默认值时,标题列 stream_position 将被称为 header__stream_position。
有关更改表的详细信息,请参阅 使用更改表。
如果满负载开始时更改表已存在:选择以下选项之一以确定在满负载复制开始时如何加载更改表:
- 删除并创建更改表:删除该表并在其位置创建一个新表。
-
删除旧更改并将新更改存储在现有更改表中:截断并添加数据,而不影响表元数据。
信息注释当 Microsoft Fabric 是目标平台时不受支持。 - 保留旧更改并将新更改存储在现有更改表中:现有更改表的数据和元数据不受影响。
表标题列
更改表头列提供有关更改处理操作的信息,如操作类型(例如 INSERT)、提交时间等。如果不需要所有此类信息,可以配置 移动 任务以创建具有选定表头列(或根本没有表头列)的更改表,从而减少它们在目标数据库中的占用空间。
有关标题列的说明,请参阅 更改表格。
错误处理
基本
应用冲突
应用 INSERT 时出现重复键:选择在与 INSERT 操作发生冲突时要采取的操作。
-
忽略:任务继续,错误被忽略。
-
更新现有目标记录:更新与插入的源记录具有相同主键的目标记录。
- 将记录记录到异常表(默认):任务继续,错误被写入异常表。
-
挂起表:任务继续,但包含错误记录的表中的数据将移至错误状态,并且其数据不会被复制。
- 停止任务:任务停止,需要人工干预。
未找到应用更新的记录:选择在与 UPDATE 操作发生冲突时要采取的操作。
- 忽略:任务继续,错误被忽略。
-
插入缺失的目标记录:缺失的目标记录将被插入到目标表中。当源端点为 Oracle 时,选择此选项需要为所有源表列启用补充日志记录。
- 将记录记录到异常表(默认):任务继续,错误被写入异常表。
-
挂起表:任务继续,但包含错误记录的表中的数据将移至错误状态,并且其数据不会被复制。
- 停止任务:任务停止,需要人工干预。
高级
数据错误处理仅在“应用更改”复制模式下受支持(在“满负载”中不受支持)。
数据错误
对于数据截断错误:选择在一个或多个特定记录中发生截断时要执行的操作。您可以从列表中选择以下选项之一:
- 忽略:任务将继续,并忽略该错误。
- 将记录记录到异常表(默认):任务继续进行,并将错误写入异常表。
- 挂起表:任务继续进行,但带有错误记录的表中的数据会移动到错误状态,并且不会复制其数据
- 停止任务:任务已停止,需要手动干预。
对于其他数据错误:选择在一个或多个特定记录中发生错误时要执行的操作。您可以从列表中选择以下选项之一:
- 忽略:任务将继续,并忽略该错误。
- 将记录记录到异常表(默认):任务继续进行,并将错误写入异常表。
- 挂起表:任务继续进行,但带有错误记录的表中的数据会移动到错误状态,并且不会复制其数据
- 停止任务:任务已停止,需要手动干预。
当其他数据错误达到时,升级错误处理(每个表):选中此复选框,当非截断数据错误(每个表)数量达到指定数量时,将错误处理升级。有效值为 1-10,000。
升级操作:选择升级错误处理时应执行的操作。请注意,可用的操作取决于从上述针对其他数据错误下拉列表中选择的操作。
-
挂起表(默认值):任务将继续,但带有错误记录的表中的数据将移动到错误状态,并且不会登陆其数据。
信息注释行为因更改处理模式而异:
-
在事务应用模式中,不会登陆上次的更改。
-
在批量优化应用模式中,可能出现数据根本不会登陆或仅部分登陆的情况。
-
- 停止任务:任务已停止,需要手动干预。
- 将记录记录到异常表:任务将继续,记录将写入异常表。
表错误
返回表格错误前的重试次数
通过该选项可控制何时触发表格错误处理策略。默认情况下,遇到表格错误后,重试三次之后将暂停表格或停止任务(根据所选操作)。有时,由于 SaaS 应用程序的计划维护,会出现表格错误。在这些情况下,默认重试次数可能不足以在触发表格错误处理策略前完成维护。这也取决于任务调度间隔,因为每次任务运行时都会执行重试。因此,举例来说,如果您安排任务每小时运行一次,而就在任务开始运行时,SaaS 应用程序离线进行维护,那么默认三次重试将允许 SaaS 应用程序离线长达三小时,而不会触发表格错误处理策略。如果维护窗口较长,则需要增加重试次数(或更改调度),以防触发表格错误处理策略。
总之,如果您知道自己的 SaaS 应用程序要进行定期维护,最佳做法是根据调度增加重试次数,以便在不触发表错误处理策略的情况下完成维护。
-
该选项只显示在配置了精简版或标准版 SaaS 应用程序连接器的任务当中。
-
如果使用 数据移动网关 ,则需要 2024.11.70 或更高版本。
遇到表格错误时:从下拉列表中选择以下选项之一:
- 挂起表(默认):任务将继续,但带有错误记录的表中的数据将移动到错误状态,并且不会复制其数据。
- 停止任务:任务已停止,需要手动干预。
当表格错误达到时,升级错误处理(每个表):选中此复选框,当表格错误(每个表)数量达到指定数量时,将错误处理升级。有效值为 1-10,000。
升级操作:表错误的升级策略设置为停止任务,无法更改。
应用冲突
未找到应用删除的记录:选择在与 DELETE 操作发生冲突时采取的操作。
- 忽略:任务继续,错误被忽略。
- 将记录记录到异常表:任务继续,记录被写入异常表。
- 挂起表:任务继续,但包含错误记录的表中的数据将移至错误状态,并且其数据不会被复制。
- 停止任务:任务停止,需要人工干预。
当应用冲突达到(每个表)时升级错误处理:选中此复选框可在应用冲突数(每个表)达到指定数量时升级错误处理。有效值为 1-10,000。
升级操作:选择升级错误处理时应发生的情况:
- 将记录记录到异常表(默认):任务继续,错误被写入异常表。
-
挂起表:任务继续,但包含错误记录的表中的数据将移至错误状态,并且其数据不会被复制。
信息注释行为因更改处理模式而异:
-
在事务应用模式下,最后的更改将不会被复制
-
在批处理优化应用模式下,可能会出现没有数据复制或数据复制不完全的情况。
-
-
停止任务:任务停止,需要人工干预。
环境错误
-
最大重试数选择此选项,然后指定发生可恢复环境错误时重试任务的最大尝试次数。重试任务达到指定次数后,任务将停止,需要手动干预。
若要从不重试任务,请清除复选框或指定“0”。
要无限次重试任务,请指定“-1”
-
重试间隔(秒)使用计数器选择或键入系统在尝试重试任务之间等待的秒数。
有效值为 0-2000。
-
- 延长长时间停机的重试间隔选中此复选框可增加长时间停机的重试间隔。启用此选项后,每次重试之间的间隔将加倍,直到达到最大重试间隔(并根据指定的最大间隔继续重试)。
- 最大重试间隔(秒)使用计数器选择或键入在启用增加长时间中断的重试间隔选项时任务重试之间等待的秒数。有效值为 0-2000。
更改处理调优
事务卸载调优
-
在以下情况下将正在进行的事务卸载到磁盘:
复制任务通常将事务数据保留在内存中,直到它完全提交到源和/或目标。但是,大于分配的内存或未在指定时间限制内提交的事务将被卸载到磁盘。
- 事务内存大小超过 (MB):所有事务在卸载到磁盘之前可以占用的最大内存大小。默认值为 1024。
- 事务持续时间超过 (秒):每个事务在卸载到磁盘之前可以保留在内存中的最长时间。持续时间从复制任务开始捕获事务的时间算起。默认值为 60。
批处理调优
此选项卡中的设置由应用更改模式决定。
仅当“应用模式”为“批处理优化”时可用的设置
- 按时间间隔应用批处理更改:
-
大于:每次应用批处理更改之间等待的最短时间。默认值为 1。
增加大于值会降低将更改应用于目标的频率,同时增加批处理的大小。在将更改应用于针对处理大型批处理进行优化的目标数据库时,这可以提高性能。
- 小于:每次应用批处理更改之间等待的最长时间(在声明超时之前)。换句话说,最大可接受的延迟。默认值为 30。此值决定了在达到大于值之后,应用更改之前等待的最长时间。
-
当处理内存超过 (MB) 时强制应用批处理:在批处理优化应用模式下用于预处理的最大内存量。默认值为 500。
为了获得最大批处理大小,请将此值设置为您可以分配给复制任务的最高内存量。在将更改应用于针对处理大型批处理进行优化的目标数据库时,这可以提高性能。
仅当“应用模式”为“事务”时可用的设置
以下设置仅在“事务”应用模式下工作时适用。请注意,当复制到 Snowflake 且加载方法为 Snowpipe Streaming 时,“事务”是唯一可用的应用模式(因此不可选择)。
-
每笔交易的最小更改次数:每个事务中要包含的最小更改数。默认值为 1000。
信息注释当更改次数等于或大于每个事务的最小更改次数值时,或者当达到下面描述的应用前批处理事务的最长时间(秒)值时,将对目标应用更改,以先发生的为准。由于应用于目标的更改频率由这两个参数控制,因此对源记录的更改可能不会立即反映在目标记录中。
- 应用前批处理事务的最长时间(秒):在声明超时之前分批收集事务的最长时间。默认值为 1。
时间间隔
使用 SAP ODP 及 SaaS 应用程序(精简版)连接器时的设置
-
每(分钟)读取更改
从源读取更改的间隔(分钟)。有效范围为 1 至 1440。
使用 SAP OData 连接器时的设置
检查是否有更改
-
根据增量提取间隔:选中此选项后,数据任务会根据增量提取间隔来检查更改。
信息注释该间隔将在每个“轮次”后开始。一个轮次可以定义为数据任务从源表读取更改并将其发送至目标(作为单个事务)所需的时间。一个轮次的长度会根据表的数量及更改的数量而变化。因此,如果您指定 10 分钟的间隔,并且一个轮次需要 4 分钟,那么检查更改之间的实际时间将为 14 分钟。-
增量提取间隔:从您的系统之中提取增量的频率。默认值为每 60 秒一次。
-
-
按计划:选中此选项之后,数据任务将提取一次增量,然后停止。然后它将继续按计划运行。
信息注释仅当 CDC 周期之间的间隔为 24 小时或者更长时,此选项才相关。有关计划的信息:
-
要了解复制项目中的“复制数据任务”,请参阅 计划任务
-
其他调优
语句缓存大小(语句数)
要在服务器上存储以供以后执行(将更改应用于目标时)的预处理语句的最大数量。默认值为 50。最大值为 200。
更新主键列时的 DELETE 和 INSERT
此选项要求在源数据库中打开完整的补充日志记录。
在 DELETE 时发送 tombstone
选择此选项时,将仅填充消息键;消息本身将为 null,表示该项目已被删除。这可以帮助使用者检测到已执行 DELETE 操作。
在目标数据库中存储任务恢复数据
选择此选项可在目标数据库中存储特定于任务的恢复信息。选择此选项后,复制任务会在目标数据库中创建一个名为 attrep_txn_state 的表。此表包含事务数据,如果 数据移动网关 Data 文件夹中的文件损坏或包含 Data 文件夹的存储设备发生故障,这些数据可用于恢复任务。
使用 SQL MERGE 应用更改
如果未选择此选项,复制任务将为 净更改表 中的每种不同更改类型执行单独的批量 INSERT、UPDATE 和 DELETE 语句。
虽然此方法非常高效,但在使用支持此选项的端点时,启用使用 SQL MERGE 应用更改选项会更加高效。
这是由于以下原因:
- 它将每个表运行的 SQL 语句数量从三个减少到一个。在大型、不可变的、基于文件的云数据库(例如 Google Cloud BigQuery)中,大多数 UPDATE 操作都涉及重写受影响的文件。对于此类操作,将每个表的 SQL 语句从三个减少到一个是非常显著的。
- 目标数据库只需扫描一次净更改表,从而显著减少 I/O。
优化插入
当使用 SQL MERGE 应用更改与优化插入选项一起选择,并且更改仅包含 INSERT 时,复制任务将执行 INSERT 而不是使用 SQL MERGE。请注意,虽然这通常会提高性能并从而降低成本,但它也可能导致目标数据库中出现复制记录。
- 使用 SQL MERGE 应用更改和优化插入选项仅适用于配置了以下目标端点的任务:
- Google Cloud BigQuery
- Databricks
- Snowflake
- 以下源端点不支持使用 SQL MERGE 应用更改和优化插入选项:
- Salesforce
- Oracle
-
启用使用 SQL MERGE 应用更改选项时:
- 非致命数据错误或无法恢复的数据错误将作为表错误处理。
- 应用冲突错误处理策略将不可编辑,并具有以下设置。
- 未找到应用删除的记录:忽略记录
应用 INSERT 时出现重复键:更新现有目标记录
信息注释如果还选择了优化插入选项,则应用 INSERT 时出现重复键选项将设置为允许目标中存在重复项。- 未找到应用更新的记录:插入缺失的目标记录
- 升级操作:将记录记录到异常表
- 以下对于其他数据错误 数据错误处理策略选项将不可用:
- 忽略记录
- 将记录记录到异常表
- 实际的 SQL MERGE 操作将仅在最终目标表上执行。INSERT 操作将在中间更改表上执行(当启用了应用更改或存储更改复制模式时)。
事务应用
复制到数据仓库目标或在没有 数据移动网关 的情况下工作时,这些选项不相关,因为应用模式始终为批处理优化,但有一个例外。
例外情况是复制到 Snowflake 并且加载方法设置为 Snowpipe streaming 时。
以下设置仅在事务应用模式下工作时可用。复制到数据库时,应用模式可以设置为批处理优化或事务。但是,当复制到 Snowflake 目标并且加载方法设置为 Snowpipe streaming 时,应用模式始终是事务性的,因此无法设置。
-
每个事务的最小更改数:每个事务中包含的最小更改数。默认值为 1000。
信息注释当更改数等于或大于每个事务的最小更改数值,或者达到批处理超时值(见下文)时(以先发生者为准),复制任务会将更改应用于目标。由于应用于目标的更改频率由这两个参数控制,因此对源记录的更改可能不会立即反映在目标记录中。 - 应用前批处理事务的最长时间(秒):在声明超时之前分批收集事务的最长时间。默认值为 1。
架构演变
选择如何处理架构中以下类型的 DDL 更改。更改架构演变设置后,必须再次准备任务。下表描述了支持的 DDL 更改可用的操作。
| DDL 更改 | 应用于目标 | 忽略 | 挂起表 | 停止任务 |
|---|---|---|---|---|
| 添加列 | 是 | 是 | 是 | 是 |
| 更改列数据类型 | 是 | 是 | 是 | 是 |
| 重命名列 | 是 | 否 | 是 | 是 |
|
重命名表 信息注释当 Kafka 是目标平台时不受支持。
|
否 | 否 | 是 | 是 |
| 删除列 | 是 | 是 | 是 | 是 |
|
删除表 信息注释当 Kafka 是目标平台时不受支持。
|
是 | 是 | 是 | 是 |
| 创建表
如果您使用选择规则添加与模式匹配的数据集,则将检测并添加符合该模式的新表。 |
是 | 是 | 否 | 否 |
字符替换
您可以替换或删除目标数据库中的源字符,和/或替换或删除所选字符集不支持的源字符。
-
所有字符都必须指定为 Unicode 代码点。
- 字符替换也将在控制表上执行。
-
无效值将由表格单元格右上角的红色三角形指示。将鼠标光标悬停在三角形上会显示错误消息。
-
为任务定义的任何表级或全局转换都将在字符替换完成后执行。
-
在替换或删除源字符表中定义的替换操作在替换或删除所选字符集不支持的源字符表格中定义的替代操作之前执行。
- 字符替换不支持 LOB 数据类型。
替换或删除源字符
使用替换或删除源字符表可以定义特定源字符的替换项。例如,当字符的 Unicode 表示在源平台和目标平台上不同时,这可能很有用。例如,在 Linux上,Shift_JIS 字符集中的减号字符表示为 U+2212,但在 Windows 上,它表示为 U+FF0D。
| 要 | 进行该操作 |
|---|---|
|
定义替代操作 |
|
|
编辑指定的源或目标角色 |
单击行末尾的 |
|
从表中删除条目 |
单击行末尾的 |
替换或删除所选字符集不支持的源字符
使用不支持的源字符(按字符集)表为所选字符集不支持的所有字符定义一个替换字符。
| 要 | 进行该操作 |
|---|---|
|
定义或编辑替换操作。 |
|
|
禁用替换操作。 |
从字符集下拉列表中选择空白条目。 |
更多选项
这些选项不会在 UI 中公开,因为它们仅与特定版本或环境相关。因此,除非 Qlik 支持或产品文档明确指示,否则不要设置这些选项。
要设置选项,只需将该选项复制到添加功能名称字段中,然后单击添加。然后根据收到的说明设置该值或启用该选项。
并行加载数据集段
在满负载期间,您可以通过将数据集拆分为多个段来加速大型数据集的加载,这些段将并行加载。可以按数据范围、所有分区、所有子分区或特定分区拆分表。
有关详细信息,请参阅 并行复制数据集片段。
计划任务
在以下用例中,您必须定义计划时间间隔以使用对源所做的更改来更新目标:
- 在没有 数据移动网关 的情况下访问数据源
- 使用 SaaS 应用程序预览连接器。在创建连接对话框和在线帮助中,预览连接器均由
按钮指示。 - 使用按计划选项从 SAP OData 源捕获更改时。
计划决定了使用对源数据集的更改更新目标数据集的频率。计划决定更新频率,而数据集类型决定更新方法。如果源数据集支持 CDC(更改数据捕获),则仅将对源数据的更改复制并应用于相应的目标表。如果源数据集不支持 CDC(例如,视图),则将通过将所有源数据重新加载到相应的目标表来应用更改。如果某些源数据集支持 CDC 而某些不支持,则将创建两个单独的子任务(假设选择了应用更改或存储更改复制选项):一个用于重新加载不支持 CDC 的数据集,另一个用于捕获对支持 CDC 的数据集的更改。在这种情况下,为了确保数据一致性,强烈建议不要为这两个任务保持相同的计划时间间隔(如果您决定将来更改更新频率)。
有关根据数据源类型和订阅层的最小调度间隔的信息,请参阅允许的最小调度间隔。
要更改计划:
-
打开您的项目,然后执行以下操作之一:
- 在任务视图中,单击复制任务上的
,然后选择计划。
- 在管道视图中,单击复制任务上的
,然后选择计划。
- 打开复制任务,然后单击计划工具栏按钮。
- 在任务视图中,单击复制任务上的
- 根据需要更改计划设置,然后单击确定。
为基于 数据移动网关 的任务执行错过的运行
有时候,网络问题可能会导致与 数据移动网关 的连接中断。如果在下一次计划运行前没有恢复与 数据移动网关 的连接,数据任务将无法按计划运行。在这种情况下,您可以选择在连接恢复后是否立即执行一次运行。
所有 数据移动网关 的默认设置均在 Administration 活动中心中定义。您可以如下所述覆盖各个任务的这些设置。
为此
-
打开您的项目,然后执行以下操作之一:
-
在任务视图中,单击数据任务上的
,然后选择计划。
-
在管道视图中,单击数据任务上的
,然后选择计划。
-
打开数据任务,然后单击计划工具栏按钮。
将打开计划 - 任务对话框。
-
-
打开对此任务使用自定义设置。
-
在对话框底部,选择以下运行错过的计划任务选项之一。
-
尽快,然后按计划(如果在下一个计划实例之前运行任务很重要)
-
按计划(在下一个计划实例运行任务)
-
-
保存您的设置。
另请参阅:执行错过的计划任务运行。