跳到主要内容 跳到补充内容

Qlik Open Lakehouse 中的数据集架构

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

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

使用 Qlik 数据网关 - 数据移动Qlik Open Lakehouse 数据管道架构。数据登陆 S3,并存储在 Iceberg open lakehouse 中。如下图所示,可以选择将表格镜像到数据仓库。

模式

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

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

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

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

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

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

表格

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

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

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

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

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

  • Changes分区 - 实时摄取

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

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

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

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

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

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

      • 已启用满负载。

  • Asset_state分区 - 跟踪进度

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

    • When changes were last appended to the Changes partition.

    • When changes were last applied to the Current partition.

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

  • Current partition (ODS) – Latest replica of the source

    Changes from the Changes partition are periodically applied to the Current partition to maintain an up-to-date, query-optimized copy of the source data.

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

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

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

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

  • 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__was _current_from_timestamp TIMESTAMP 此行进入Current分区的时间 (UTC)。这通常是存储作业运行并应用更改的时间。
hdr__was _current_to_timestamp TIMESTAMP 例如,由于版本更新,该行从Current表中删除的时间(UTC)。

信息注释当前和历史视图依赖于Changes分区,并且始终接近实时。但是,如果您遇到查询性能缓慢的问题,可能是由于大量更改尚未应用到CurrentPrior分区。未合并的分段在查询时需要更多处理,从而使访问速度变慢。

本页面有帮助吗?

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