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

Qlik Open Lakehouse 中的数据集架构

当您在 Qlik Open Lakehouse 中生成数据集时,存储表、更改表和视图将由 Qlik Talend Data Integration 自动生成。您可以查询这些视图以访问以 Iceberg 开放表格式存储的当前和历史数据。

直观且有引导的用户界面可帮助您构建、建模和执行数据管道。您可以自动为操作数据存储 (ODS) 和历史数据存储 (HDS) 生成模式,而无需手动编码。

使用 Qlik 数据网关 - 数据移动Qlik Open Lakehouse 数据管道架构。数据登陆到 S3,并存储在 Iceberg 开放湖仓中。或者,如下所示,可以将表镜像到数据仓库。

模式

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

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

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

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

仅检查内部模式是否存在命名冲突。对于其他模式,您必须确保表名中没有命名冲突。最佳实践是将内部模式命名为与数据任务模式相同的名称,并添加 _internal。这可确保每个模式和前缀组合都是唯一的。

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

对于每个源表,将在内部模式中创建一个带有后缀 _internal 的表,格式如下:

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

该表包含五个分区,每个分区在处理和存储数据的方式上都有不同的用途。每个分区根据其在数据生命周期中的角色利用表列的子集。

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

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

  • Changes 分区 – 实时摄取

    来自源系统的所有更改(插入、更新和删除)首先附加到 Changes 分区。

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

    • 每个更改都标记有一个类型(I、U 或 D),指示其处理方式。

    • 事件在发生时从源捕获。该分区近乎实时地更新。

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

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

      • 启用了满负载。

  • Asset_state 分区 - 跟踪进度

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

    • 最后一次将更改附加到 Changes 分区的时间。

    • 最后一次将更改应用到 Current 分区的时间。

    这提供了对同步管道的完全可见性,并有助于监控或排除延迟故障。

  • Current 分区 (ODS) – 源的最新副本

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

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

    • 初始满负载直接写入 Current 分区。

    • 此分区反映了数据的当前状态,专为高效查询而设计。

  • Prior 分区 (HDS) – 历史数据

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

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

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

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

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

  • Reload 分区

    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 - 从比较和应用中删除。

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

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

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 - 从比较和应用中删除。

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

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

hdr__was_current_from_timestamp TIMESTAMP 记录首次成为当前记录的 UTC 时间戳。
hdr__was_current_to_timestamp 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 - 从比较和应用中删除。

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

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

hdr__timestamp TIMESTAMP UTC 时间戳。
hdr__key_hash BINARY (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 分区相同。

视图

创建的所有视图均近乎实时地更新。以下视图可用于简化查询和报告:

Current

Current 视图反映了数据的最新状态。此视图表示源表的副本,近乎实时地更新。它合并了来自 CurrentChanges 分区的数据。

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

没有向表结构添加标题列。

历史记录

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

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

以下标题字段将添加到 History 视图中:

字段 类型 描述
hdr__key_hash BINARY (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 - 从比较和应用中删除。

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

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

hdr__deleted BIT 指示记录是否被软删除,基于 hdr__operation 是否为 D 或 d。
hdr__was_current_from_timestamp TIMESTAMP 此行进入 Current 分区的时间 (UTC)。这通常是存储作业运行并应用更改的时间。
hdr__was_current_to_timestamp TIMESTAMP Current 表中删除该行的时间 (UTC),例如,由于存在较新版本。

信息注释Current 和 History 视图依赖于 Changes 分区,并且始终近乎实时。 但是,如果您遇到查询性能缓慢的情况,可能是由于大量尚未应用到 CurrentPrior 分区的更改所致。未合并的增量在查询时需要更多处理,从而导致访问速度变慢。

本页面有帮助吗?

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