Перейти к основному содержимому Перейти к дополнительному содержимому

Архитектура набора данных в Открытое озеро данных 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 сохраняются две ключевые метки времени:

    • Когда изменения были в последний раз добавлены в раздел изменений.

    • Когда изменения были в последний раз применены к разделу текущих данных.

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

  • Раздел 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)

Последняя операция по этой записи.

  • D — удалено из раздела изменений.

  • U — обновлено из раздела изменений.

  • I — вставлено из раздела изменений.

  • L — вставлено задачей полной загрузки.

  • d — удалено из сравнения и применения.

  • u — обновлено из сравнения и применения

  • i — вставлено из сравнения и применения

hdr__метка_времени_вставки TIMESTAMP Временная метка (UTC) первого добавления ключа. Если используется полная загрузка, начальное время полной нагрузки.
hdr__modified_timestamp TIMESTAMP Временная метка в формате UTC последнего обновления.

Раздел предыдущих версий

Поле Тип Описание
hdr__хеш_ключа VARBINARY (20) Хэш всех первичных ключей записей.
hdr__начальная_метка_времени TIMESTAMP Метка времени в формате UTC.
hdr__to_timestamp TIMESTAMP Метка времени в формате UTC.
hdr__operation STRING (1)

Последняя операция по этой записи.

  • D — удалено из раздела изменений.

  • U — обновлено из раздела изменений.

  • I — вставлено из раздела изменений.

  • L — вставлено задачей полной загрузки.

  • d — удалено из сравнения и применения.

  • u — обновлено из сравнения и применения

  • i — вставлено из сравнения и применения

hdr__была_текущей_с_Метка времени TIMESTAMP Временная метка в формате UTC, указывающая, когда впервые запись была текущей.
hdr__была_текущей_до_Метка времени TIMESTAMP Временная метка в формате UTC, указывающая, когда в последний раз запись была текущей.

Раздел изменений

Поле Тип Описание
hdr__change_identifier VARCHAR (50)

Идентификатор изменения представляет собой строку, которая состоит из двух частей:

  • Временная метка начала выполнения пакета (в миллисекундах) после 1/1/1970 (строка из 10 цифр).

  • Последовательность изменения из шлюза репликации (35 знаков).

Операция VARCHAR (1)

Последняя операция по этой записи.

  • D — удалено из раздела изменений.

  • U — обновлено из раздела изменений.

  • I — вставлено из раздела изменений.

  • L — вставлено задачей полной загрузки.

  • d — удалено из сравнения и применения.

  • u — обновлено из сравнения и применения

  • i — вставлено из сравнения и применения

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)

Указывает, где находится запись:

  • CURRENT — если запись находится в текущем разделе.

  • PRIOR — если запись находится в предыдущем разделе с историческими данными.

Операция STRING (1)

Последняя операция по этой записи.

  • D — удалено из раздела изменений.

  • U — обновлено из раздела изменений.

  • I — вставлено из раздела изменений.

  • L — вставлено задачей полной загрузки.

  • d — удалено из сравнения и применения.

  • u — обновлено из сравнения и применения

  • i — вставлено из сравнения и применения

hdr__deleted BIT Указывает, является ли запись обратимо удаленной (в зависимости от того, имеет ли hdr__operation значение D или d).
hdr__was _current_from_timestamp TIMESTAMP Время (UTC), когда эта строка попала в раздел Current.Обычно это происходит, когда выполнялась задача хранения и было применено изменение.
hdr__was _current_to_timestamp TIMESTAMP Время (UTC), когда строка была удалена из таблицы текущих данных, например, в связи с появлением новой версии.

Примечание к информацииВиды «Текущие данные» и «История» формируются по данным из раздела изменений и всегда меняются в режиме, близкому к реальному времени. Однако низкая производительность запросов может быть вызвана накоплением большого количества изменений, не примененных к разделам с текущими данными и предыдущими версиями. Необъединенные дельты обрабатываются дольше во время запроса, что замедляет доступ.

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

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