Архитектура набора данных в Открытое озеро данных Qlik
Если генерирование набора данных происходит в Открытое озеро данных Qlik, Qlik Talend Data Integration автоматически генерирует таблицы хранения, таблицы изменений и виды. Можно запросить эти виды, чтобы получить доступ к текущим и историческим данным, хранящимся в формате открытой таблицы Iceberg.
Благодаря интуитивно понятному интерфейсу и инструкциям системы, пользователь может строить, моделировать и выполнять конвейеры данных. Кроме того, схемы для хранилищ операционных (ODS) и исторических данных (HDS) могут генерироваться автоматически, что позволяет обойтись без ручного написания кода.
Архитектура для конвейера данных Открытое озеро данных Qlik с использованием Шлюз данных Qlik — движение данных. Данные выгружаются в S3 и хранятся в открытом озере-хранилище данных Iceberg. При необходимости таблицы можно зеркалировать в хранилище данных, как описано ниже.

Схемы
Артефакты генерируются во внутренних схемах, а также в схемах задач данных.
-
Внутренняя схема содержит физическую таблицу с несколькими разделами.
-
Схема задач данных содержит виды, которые можно использовать для работы с данными.
Когда схема связана с несколькими задачами данных, каждая задача данных должна использовать уникальный префикс для таблиц и видов. Префикс можно настроить в параметрах задачи данных.
Только внутренние схемы проверяются на предмет конфликтов имен. Для других схем необходимо убедиться в отсутствии конфликтов имен в именах таблиц. Рекомендуется использовать для внутренней схемы то же имя, что для схемы задачи данных, добавив _internal. Это сделает комбинацию схемы и префикса уникальной.
Таблицы
Для каждой таблицы-источника во внутренней схеме создается таблица с суффиксом _internal в следующем формате:
<INTERNAL_SCHEMA>.<TABLE_NAME>_internal
Эта таблица содержит пять разделов, каждый из которых выполняет свою уникальную функцию в обработке и хранении данных. Каждый раздел работает с некоторым подмножеством столбцов таблицы в зависимости от своей роли в жизненном цикле данных.
Внутренний набор данных структурирован так, чтобы повысить эффективность управления данными из источника и обеспечить ввод данных в режиме реального времени и возможность отслеживания истории. Управление потоком данных осуществляется через несколько специализированных разделов, описание которых приводится ниже:
-
Раздел Changes — ввод данных в реальном времени
Все изменения из исходной системы — вставки, обновления и удаления — сначала добавляются в раздел Changes.
-
Этот раздел выполняет функцию журнала, в котором сохранена вся информация об изменениях источника до применения преобразований.
-
Каждое изменение помечено типом (I, U или D), указывающим на способ обработки.
-
События регистрируются по мере их возникновения в источнике. Раздел обновляется почти что в реальном времени.
-
Раздел Changes доступен, если в задаче промежуточного хранения в озере применены следующие настройки.
-
На вкладке Общие в поле Метод обновления должно быть выбрано CDC.
-
Включена полная загрузка
-
-
-
Раздел Asset_state — отслеживание прогресса
По мере поступления изменений в разделе Asset_state сохраняются две ключевые метки времени:
-
Когда изменения были в последний раз добавлены в раздел изменений.
-
Когда изменения были в последний раз применены к разделу текущих данных.
Это обеспечивает полную прозрачность конвейера синхронизации и помогает отслеживать или устранять задержки.
-
-
Раздел Current (ODS)— последняя копия источника
Изменения из раздела Changes периодически применяются к разделу Current, чтобы обеспечить актуальность копии исходных данных и оптимизировать ее для запросов.
-
Эти обновления применяются автоматически в фоновом режиме. Это основано на объеме накопленных изменений, а не на фиксированном расписании.
-
Первая полная загрузка записывается прямо в раздел Current.
-
Этот раздел отражает текущее состояние данных и предназначен для эффективного выполнения запросов.
-
-
Раздел Prior (HDS) — исторические данные
Если в разделе Current была обновлена или удалена запись, в разделе Prior сохраняется последняя версия данных.
-
Записи содержат метаданные, включая историю изменений и диапазон дат, когда данные были действительными.
-
Поддерживаются медленно изменяющиеся измерения типа 2 (SCD2).
-
Раздел Prior доступен, если на вкладке Общее в настройках задачи хранения данных активирован параметр Хранить исторические записи и архив записей об изменениях.
-
Когда обновленная версия записи передается в раздел Current, предыдущая запись перемещается в раздел Prior для отслеживания истории.
-
-
Раздел Reload
Раздел Reload является зоной временного хранения во время полной перезагрузки, выполняемой вручную или по расписанию:
-
Новые данные сначала записываются в раздел Reload.
-
Задачи по регулярному обслуживанию очищают все изменения, находящиеся в состояния ожидания, перед тем, как они будут приостановлены.
-
Данные сравниваются с разделом Current, и в раздел Current переносятся только данные, у которых есть отличия.
-
Раздел Reload очищается после завершения операции.
Такой механизм позволяет минимизировать воздействие на основной набор данных во время операций полной перезагрузки.
-
Раздел Current
| Поле | Тип | Описание |
|---|---|---|
| hdr__хеш_ключа | VARBINARY (20) | Хэш всех первичных ключей записей. Формат хэша — SHA1. Столбцы разделяются символом backspace. |
| Метка времени | TIMESTAMP |
Метка времени в формате UTC:
|
| Операция | VARCHAR (1) |
Последняя операция по этой записи.
|
| hdr__метка_времени_вставки | TIMESTAMP | Временная метка (UTC) первого добавления ключа. Если используется полная загрузка, начальное время полной нагрузки. |
| hdr__modified_timestamp | TIMESTAMP | Временная метка в формате UTC последнего обновления. |
Раздел предыдущих версий
| Поле | Тип | Описание |
|---|---|---|
| hdr__хеш_ключа | VARBINARY (20) | Хэш всех первичных ключей записей. |
| hdr__начальная_метка_времени | TIMESTAMP | Метка времени в формате UTC. |
| hdr__to_timestamp | TIMESTAMP | Метка времени в формате UTC. |
| hdr__operation | STRING (1) |
Последняя операция по этой записи.
|
| hdr__была_текущей_с_Метка времени | TIMESTAMP | Временная метка в формате UTC, указывающая, когда впервые запись была текущей. |
| hdr__была_текущей_до_Метка времени | TIMESTAMP | Временная метка в формате UTC, указывающая, когда в последний раз запись была текущей. |
Раздел изменений
| Поле | Тип | Описание |
|---|---|---|
| hdr__change_identifier | VARCHAR (50) |
Идентификатор изменения представляет собой строку, которая состоит из двух частей:
|
| Операция | VARCHAR (1) |
Последняя операция по этой записи.
|
| hdr__timestamp | TIMESTAMP | Метка времени в формате UTC. |
| hdr__хеш_ключа | BINARY (20) | Хэш всех первичных ключей записей. |
| hdr__метка_времени_вставки | TIMESTAMP | Метка времени UTC, соответствующая времени, когда изменение было обработано в Qlik. |
Раздел Asset_state
| Поле | Тип | Описание |
|---|---|---|
| hdr__apply_change_identifier | VARCHAR (50) | Идентификатор последнего изменения, примененного к разделу текущих данных. |
| hdr__copy_change_identifier | VARCHAR (50) | Идентификатор последнего изменения, добавленного в раздел текущих данных. |
Раздел перезагрузки
Столбцы в разделе перезагрузки аналогичны столбцам в разделе текущих данных.
Виды
Все созданные виды обновляются практически в режиме реального времени. Следующие виды позволяют упростить работу с запросами и отчетами:
Текущие данные
В виде «Текущие данные» показано самое последнее состояние данных. Это представление представляет собой копию исходной таблицы, обновляемую практически в режиме реального времени. В нем объединены данные из разделов текущих данных и изменений.
Имя: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>
В структуру таблицы не добавляются поля заголовков.
История
Вид «История» генерируется в схеме ресурсов данных по каждой выбранной исходной таблице, если в настройках задачи данных активен параметр «История». Представление истории объединяет данные из раздела предыдущих версий и раздела изменений. В нем представлена полная история изменений, поэтому этот вид идеально подходит для аудита или исторического анализа.
Имя: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>_<Suffix for history views>
В вид «История» добавляются следующие поля заголовков.
| Поле | Тип | Описание |
|---|---|---|
| hdr__key_hash | BINARY (20) | Хэш всех первичных ключей записей. |
| hdr__начальная_метка_времени | TIMESTAMP | Метка времени, когда изменение произошло в системе-источнике. Соответствует времени, когда пользователь в первый раз сделал изменение. |
| hdr__конечная_метка_времени | TIMESTAMP | Метка времени, когда изменение было отменено или обновлено в системе-источнике. |
| hdr__store | VARCHAR (10) |
Указывает, где находится запись:
|
| Операция | STRING (1) |
Последняя операция по этой записи.
|
| hdr__deleted | BIT | Указывает, является ли запись обратимо удаленной (в зависимости от того, имеет ли hdr__operation значение D или d). |
| hdr__was _current_from_timestamp | TIMESTAMP | Время (UTC), когда эта строка попала в раздел Current.Обычно это происходит, когда выполнялась задача хранения и было применено изменение. |
| hdr__was _current_to_timestamp | TIMESTAMP | Время (UTC), когда строка была удалена из таблицы текущих данных, например, в связи с появлением новой версии. |