Архитектура набора данных в Открытое озеро данных Qlik | Qlik Cloud Справка
Перейти к основному содержимому Перейти к дополнительному содержимому

Архитектура набора данных в Открытое озеро данных Qlik

При создании наборов данных в Открытое озеро данных Qlik таблицы хранения, таблицы изменений и представления генерируются автоматически с помощью Qlik Talend Data Integration. Вы можете выполнять запросы к этим представлениям для доступа к текущим и историческим данным, хранящимся в формате открытых таблиц Iceberg.

Интуитивно понятный пользовательский интерфейс с подсказками помогает создавать, моделировать и выполнять конвейеры данных. Вы можете автоматически генерировать схемы для хранилищ операционных данных (ODS) и хранилищ исторических данных (HDS) без написания кода вручную.

Архитектура для конвейера данных Открытое озеро данных Qlik с использованием Шлюз данных Qlik — движение данных. Данные проходят промежуточное хранение в S3 и хранятся в открытом лейкхаусе Iceberg. При необходимости, как показано ниже, таблицы могут быть зеркалированы в хранилище данных.

Схемы

Артефакты генерируются во внутренней схеме и схеме задачи данных.

  • Внутренняя схема содержит физическую таблицу с несколькими разделами.

  • Схема задачи данных содержит представления, которые можно использовать для потребления данных.

    Если схема связана более чем с одной задачей данных, каждая задача данных должна использовать уникальный префикс для таблиц и представлений. Префикс можно задать в настройках задачи данных.

Только внутренние схемы проверяются на наличие конфликтов имен. Для других схем необходимо убедиться в отсутствии конфликтов в именах таблиц. Рекомендуется называть внутреннюю схему так же, как схему задачи данных, с добавлением _internal. Это гарантирует уникальность каждой комбинации схемы и префикса.

Примечание к информацииВсе таблицы и представления управляются Qlik Talend Data Integration. Не изменяйте данные с помощью других инструментов.

Таблицы

Для каждой исходной таблицы во внутренней схеме создается таблица с суффиксом _internal в следующем формате:

<INTERNAL_SCHEMA>.<TABLE_NAME>_internal

Эта таблица содержит пять разделов, каждый из которых служит определенной цели в обработке и хранении данных. Каждый раздел использует подмножество столбцов таблицы в зависимости от его роли в жизненном цикле данных.

Примечание к информацииТаблица во внутренней схеме может быть изменена без предварительного уведомления. По возможности для потребления данных следует использовать в первую очередь представления.

Внутренний набор данных структурирован для эффективного управления входящими данными из исходной системы, поддерживая прием данных в реальном времени и отслеживание истории. Поток данных управляется через несколько специализированных разделов, каждый из которых описан ниже:

  • Раздел Changes – Прием данных в реальном времени

    Все изменения из исходной системы — вставки, обновления и удаления — сначала добавляются в раздел Changes.

    • Выступая в качестве необработанного журнала изменений, этот раздел предоставляет полную ленту активности источника до выполнения каких-либо преобразований.

    • Каждое изменение помечается типом (I, U или D), указывающим, как оно обрабатывается.

    • События фиксируются из источника по мере их возникновения. Раздел обновляется почти в реальном времени.

    • Раздел 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. Столбцы разделены символом возврата на одну позицию (backspace).
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)

Идентификатор изменения — это строка, состоящая из двух частей:

  • Метка времени начала выполнения пакета в миллисекундах с 1/1/1970 (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 Метка времени UTC времени, когда изменение было обработано Qlik.

Раздел Asset_state

Поле Тип Описание
hdr__apply_change_identifier VARCHAR (50) Идентификатор изменения последнего изменения, примененного к разделу Current.
hdr__copy_change_identifier VARCHAR (50) Идентификатор изменения последнего изменения, добавленного в раздел Changes.

Раздел Reload

Столбцы, используемые разделом Reload, идентичны разделу Current.

Представления

Все созданные представления обновляются почти в реальном времени. Для упрощения выполнения запросов и создания отчетов доступны следующие представления:

Current

Представление Current отражает самое последнее состояние данных. Это представление представляет собой реплику исходной таблицы, обновляемую почти в реальном времени. Оно объединяет данные из разделов Current и Changes.

Имя: <EXTERNAL_SCHEMA>.[<PREFIX>]<TABLE_NAME>

В структуру таблицы не добавляются столбцы заголовков.

History

Представление History генерируется в схеме ресурсов данных для каждой выбранной исходной таблицы, если в настройках задачи данных включена функция History. Представление History объединяет данные из разделов Prior и Changes. Оно предоставляет полную временную шкалу изменений, идеально подходящую для аудита или исторического анализа.

Имя: <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 Указывает, была ли запись удалена программно (soft deleted), на основе того, равно ли значение hdr__operation D или d.
hdr__was_current_from_timestamp TIMESTAMP Время (UTC), когда эта строка попала в раздел Current. Обычно это происходит, когда выполняется задание хранения и применяется изменение.
hdr__was_current_to_timestamp TIMESTAMP Время (UTC), когда строка была удалена из таблицы Current, например, из-за появления более новой версии.

Примечание к информацииПредставления Current и History зависят от раздела Changes и всегда работают почти в реальном времени. Однако, если вы столкнулись с низкой производительностью запросов, это может быть связано с большим количеством изменений, которые еще не были применены к разделам Current или Prior. Необъединенные дельты требуют дополнительной обработки во время выполнения запроса, что замедляет доступ.

Помогла ли вам эта страница?

Если вы обнаружили какую-либо проблему на этой странице или с ее содержанием — будь то опечатка, пропущенный шаг или техническая ошибка, сообщите нам об этом!