Qlik Open Lakehouse 中的流式传输源数据集架构 | Qlik Cloud帮助
跳到主要内容 跳到补充内容

Qlik Open Lakehouse 中的流式传输源数据集架构

上次更新日期:2026/9/8

数据流源在 Qlik Open Lakehouse 中拥有自己的架构,因为它们不需要 Data Movement gateway 将数据加载到登陆存储段中,而是由 lakehouse 集群提供支持。

当您从文件名中包含数据模式的文件中摄取数据时,这使得湖仓集群能够在 S3 中执行有针对性的列表操作,从而显著加快读取文件列表的时间。此外,Qlik Open Lakehouse 可以基于日期模式预测即将到达的文件。数据流登陆任务无需每次都列出整个存储段,而是可以请求 S3 在特定日期范围内的文件。拥有较小的文件列表会带来更好的性能。可选的加载后删除设置可用于保持较少的文件数量。不执行满负载,第一批记录被视为插入的更改。

Qlik Open Lakehouse 中,流式转换任务取代了存储任务。此任务用于将登陆的数据转换为 Iceberg 表并进行存储。流式转换任务只能在流式登陆任务之后添加。流式转换任务支持两种记录更新模式:

  • 仅追加:添加新记录,不修改现有数据,如果出现复制记录,则不强制执行键约束。
  • 应用更改 (合并): 根据关键字段更新现有记录并插入新记录。此模式提供使用软删除或保留历史数据(类型 2)的选项。

数据流转换任务是一个基于目标的任务,它在源和目标之间进行映射,并包含架构演进功能。它提供扩展的转换功能,包括嵌套结构的解嵌套以及数组的展平。有关可在 Steaming Transform 任务中使用的函数的更多信息,请参阅 转换函数

当您从流式源摄取数据时,您可以配置 Iceberg 分区、保留管理、排序列、快照过期,以控制存储成本,并优化查询性能。

在仅追加模式下的流式 Qlik Open Lakehouse 数据管道架构

Open lakehouse architecture in append only mode

合并模式下的流式 Qlik Open Lakehouse 数据管道架构

Open lakehouse architecture in merge mode

登陆表

将以下标题列添加到登陆表。这些列始终存在于登陆数据中,但默认情况下不包含在下游流式转换任务中。您可以将它们添加到流式转换任务中,通过使用从源添加列,或者在添加或编辑列时在表达式构建器中引用它们。

为 Kafka 源添加了标头列
字段 类型 描述
hdr__kafka_partition Long Kafka 分区
hdr__kafka_topic 字符串 Kafka 主题
hdr__kafka_offset Long 分区中的累计值
hdr__kafka_key 字符串 Base64 编码密钥。若不可用,则设为 NULL 字符串。
hdr__kafka_headers 字符串

包含所有消息头的 JSON。若不可用,则设为 NULL 字符串。

已为 Amazon Kinesis 源添加标头列
字段 类型 描述
hdr__kinesis_stream 字符串 Amazon Kinesis 数据流
hdr__kinesis_shard 字符串 Amazon Kinesis 分片
hdr__kinesis_offset 字符串 Amazon Kinesis 偏移量
Amazon S3 源已添加标题列
字段 类型 描述
hdr__file_name 字符串 文件名
hdr__file_size Long 文件大小(按字节计)

模式

工件在内部模式和数据任务模式中生成。

  • 内部模式包括一个具有多个分区的物理表。

  • 数据任务模式包含可用于使用数据的视图。

    当架构与多个数据任务关联时,每个数据任务都必须为表和视图使用唯一的前缀。您可以在数据任务设置中设置前缀。

仅检查内部架构的命名冲突。对于其他模式,必须确保表名称中没有命名冲突。最佳做法是将内部模式命名为与添加了 _internal 的数据任务模式相同的名称。这将有效确保每个模式和前缀组合都是唯一的。

信息注释所有表格和视图由 Qlik Talend Data Integration 管理。请勿使用其他工具更改数据。

表格

对于每个源表,都会在内部模式中创建一个后缀为 _internal 的表,格式为

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

该数据表在应用更改(合并)模式下包含五个分区,每个分区在数据处理和存储方面都有不同作用。每个分区根据其在数据表生命周期中的作用,利用表列的一个子集。在仅追加模式下,表没有分区,其行为类似于当前分区 (ODS)

信息注释内部架构中的表如有更改,恕不另行通知。在可能的情况下,您应该主要使用视图来使用数据。

内部数据集的结构可以有效管理来自数据源系统的传入数据,支持实时摄取和历史跟踪。数据流通过几个专门分区来进行管理,每个分区的情况如下:

  • 变化分区 - 实时摄取

    源系统的所有更改 - 插入、更新和删除 - 都会首先附加到Changes分区。

    • 作为原始的更新日志,该分区可在发生任何转换之前提供完整源活动信息。

    • 每项变更都标有类型(I、U 或 D),表明其处理方式。

    • 事件发生时从源捕捉。分区几乎实时更新。

    • 在湖登陆数据任务中应用以下设置时,可使用Changes分区。

      • 常规选项卡中,更新方法设置为 CDC

      • 已启用满负载。

  • Asset_state 分区 - 跟踪进度

    在摄取更改时,Asset_state分区会记录两个关键的时间戳:

    • 上次将更改添加到 Changes 分区时。

    • 上次对 Current 分区应用更改的时间。

    这提供了同步管道的全面可视性,有利于监控或排除故障延迟。

  • 当前分区 (ODS) - 源的最新副本

    Changes 分区中的更改会定期应用于Current 分区,以维护源数据的最新查询优化副本。

    • 后台任务会自动运行,以便应用这些更新。这是基于累积的变更量,而不是一个固定时间表。

    • The initial full load is written directly to the Current partition.

    • 该分区反映了数据当前状态,旨在实现高效查询。

  • 先前分区 (HDS) - 历史数据

    Current分区中更新或删除记录时,先前版本副本会写入Prior分区。

    • 记录包含元数据,包括更改历史和数据有效的日期范围。

    • 这支持类型 2 缓慢变化的维度 (SCD2)。

    • 如果在存储数据任务设置的Prior常规选项卡中启用了保留历史记录和更改记录存档,则可使用分区。

    • 当记录的更新版本进入Current分区时,之前的记录会被移至Prior分区,以便进行历史跟踪。

  • 重载分区

    重载Reload分区在手动或计划的全面重载期间充当临时中转区:

    • 新数据首先写入重载Reload分区。

    • 定期维护任务会在暂停之前清除任何待定更改。

    • 将数据与当前Current分区进行比较,只有差异才会被移动到当前Current分区。

    • 操作完成后,重载Reload分区将被清除。

    这一过程可确保在全面重载操作过程中尽量减少对主数据集的干扰。

Current 分区

字段 类型 描述
hdr__key_hash VARBINARY (20) 所有记录主键的散列。散列格式为 SHA1。列由退格字符分隔。
hdr__from_timestamp TIMESTAMP

依据 UTC 的时间戳:

  • 对于从满负载采集的数据,它将是满负载开始时间。

  • 对于来自 Changes 分区的更改,这是记录的时间戳字段。

hdr__operation VARCHAR (1)

此记录的最新操作。

  • D - 从Changes分区中删除。

  • U - 从Changes分区更新。

  • I - 从Changes分区插入。

  • L - 通过满负载任务插入。

  • d - 从比较和应用中删除。

  • d - 从比较和应用中更新。

  • d - 从比较和应用中插入。

hdr__inserted_timestamp TIMESTAMP 首次添加密钥的 UTC 时间戳。当使用满载时,满载的开始时间。
hdr__modified_timestamp TIMESTAMP 上次进行更新的 UTC 时间戳。

Prior 分区

字段 类型 描述
hdr__key_hash VARBINARY (20) 所有记录主键的散列。
hdr__from_timestamp TIMESTAMP 依据 UTC 的时间戳。
hdr__to_timestamp TIMESTAMP 依据 UTC 的时间戳。
hdr__operation STRING (1)

此记录的最新操作。

  • D - 从Changes分区中删除。

  • U - 从Changes分区更新。

  • I - 从Changes分区插入。

  • L - 通过满负载任务插入。

  • d - 从比较和应用中删除。

  • d - 从比较和应用中更新。

  • d - 从比较和应用中插入。

hdr__曾是当前_起始时间戳 TIMESTAMP 第一次记录的 UTC 时间戳是当前的。
hdr__曾是当前_结束时间戳 TIMESTAMP 最后一次记录的 UTC 时间戳是当前的。

Changes 分区

字段 类型 描述
hdr__change_identifier VARCHAR (50)

更改标识符是由两部分组成的字符串:

  • 自 1970 年 1 月 1 日以来以毫秒为单位的批运行开始时间戳(10 位字符串)。

  • 来自复制网关的更改顺序(35 个字符)。

hdr__operation VARCHAR (1)

此记录的最新操作。

  • D - 从Changes分区中删除。

  • U - 从Changes分区更新。

  • I - 从Changes分区插入。

  • L - 通过满负载任务插入。

  • d - 从比较和应用中删除。

  • d - 从比较和应用中更新。

  • d - 从比较和应用中插入。

hdr__timestamp TIMESTAMP 依据 UTC 的时间戳。
hdr__key_hash 二进制 (20) 所有记录主键的散列。
hdr__inserted_timestamp TIMESTAMP Qlik 处理更改时的 UTC 时间戳。

Asset_state 分区

字段 类型 描述
hdr__apply_change_identifier VARCHAR (50) 应用于Current分区的最新更改的更改标识符。
hdr__copy_change_identifier VARCHAR (50) 附加到Changes分区的最新更改的更改标识符。

Reload 分区

Reload 分区使用的列与 Current 分区相同。

视图

创建的所有视图都几乎为实时更新。以下视图可简化查询和报告:

当前

当前视图反映数据最新状态。该视图是源表的复制品,近乎实时更新。它会合并 CurrentChanges 分区的数据。

名称:<EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>

没有标题列添加到表结构中。

历史记录

如果在数据任务设置中启用了历史记录,则会在数据资产模式中为每个选定源表生成历史记录视图。历史记录视图合并了 PriorChanges 分区中的数据。它提供了一个完整的变更时间表,非常适合审计或历史分析。

名称:<EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>

以下标题字段将添加到“历史记录”视图中:

字段 类型 描述
hdr__key_hash 二进制 (20) 所有记录主键的散列。
hdr__from_timestamp TIMESTAMP 源系统中发生更改时的时间戳。这反映了用户最初进行更改的时间。
hdr__to_timestamp TIMESTAMP 源系统中更改被撤销或更新时的时间戳。
hdr__store VARCHAR (10)

这指示记录所在的位置:

  • CURRENT - 如果记录位于 Current 分区中。

  • PRIOR - 如果记录与历史数据一起存在于Prior分区中。

hdr__operation STRING (1)

此记录的最新操作。

  • D - 从Changes分区中删除。

  • U - 从Changes分区更新。

  • I - 从Changes分区插入。

  • L - 通过满负载任务插入。

  • d - 从比较和应用中删除。

  • d - 从比较和应用中更新。

  • d - 从比较和应用中插入。

hdr__deleted 根据 hdr_operation 是 D 还是 d,指示记录是否被软删除。
hdr__曾是当前_起始时间戳 TIMESTAMP 此行进入Current分区的时间 (UTC)。这通常是存储作业运行并应用更改的时间。
hdr__曾是当前_结束时间戳 TIMESTAMP 例如,由于版本更新,该行从Current表中删除的时间(UTC)。
信息注释当前和历史视图依赖于Changes分区,并且始终接近实时。但是,如果您遇到查询性能缓慢的问题,可能是由于大量更改尚未应用到CurrentPrior分区。未合并的分段在查询时需要更多处理,从而使访问速度变慢。

在视图中显示表头列

您可以控制是否显示或隐藏标题列。选项根据任务类型而异。

信息注释标题列会自动填充数据,并且是只读的。

流式登陆任务

若要显示标头列,请启用搜索框右侧的显示标头列

流媒体转换任务

搜索框右侧提供一个包含以下选项的下拉列表。

  • 隐藏标题列: 默认设置。

  • 显示标题列

    • 标准: 选择以显示标准视图的标题列。

    • 历史记录: 选择显示历史记录视图的标题列。请注意,此选项仅在创建历史数据存储(类型 2)在任务或数据集设置中启用时才可用。

有关可用表头列的说明,请参阅 登陆表视图

Govnote-not-inQlik Cloud 政府 中不支持

本页面有帮助吗?

如果您发现此页面或其内容有任何问题 – 打字错误、遗漏步骤或技术错误 – 请告诉我们!