Зеркальное отображение данных в облачное хранилище данных
Задачи зеркалирования позволяют делать запросы к данным, хранящимся в Открытое озеро данных Qlik, из ваших облачных хранилищ данных. Данные отражаются в вашем хранилище без дубликата. Зеркальные таблицы позволяют минимизировать затраты на хранение и разработку, а также обеспечивают наличие единого источника достоверных данных.
После подключения ваших данных к Открытое озеро данных Qlik, вы можете зеркалировать свои данные в ваше облачное хранилище данных с помощью зеркальных таблиц. Данные в Iceberg можно запрашивать с помощью механизма запросов, который поддерживает Iceberg напрямую, например Amazon Athena. Однако зеркальные таблицы оптимальным образом подходят для случаев, когда требуется внедрить открытую архитектуру озер-хранилищ на базе таблиц Iceberg и продолжить использовать механизм запросов вашего хранилища данных. Задача «Зеркальные данные» автоматически делает таблицы Iceberg доступными в вашем хранилище данных, декларируя их как внешние таблицы и представления. Хранилище данных ссылается на таблицу Iceberg как на внешнее представление, поскольку оно не управляет этой таблицей, а только читает из нее. Внешние таблицы и представления позволяют запрашивать данные Iceberg в вашем хранилище данных без переноса данных или управления вашими таблицами в ваше хранилище данных.
Задача зеркалирования выполняет необходимые DDL-операторы для создания внешних таблиц и представлений. Таблица (схема) отображается в хранилище данных вместе с таблицами изменений и историческими таблицами, однако, если посмотреть на определение таблицы, она отображается в виде представления, созданного поверх внешней таблицы. Потребители данных могут запрашивать представления так же, как если бы данные хранились в их среде хранилища данных. Зеркальные данные обеспечивают высокую производительность, поскольку управление и оптимизация данных производится в Qlik.
Зеркалирование в несколько хранилищ данных
Один набор данных может быть зеркалирован в несколько облачных хранилищ данных. На следующем изображении показано, как проект Открытое озеро данных Qlik конвейера может быть использован для зеркалирования данных в Amazon Redshift и Snowflake:
-
The pipeline ingests data from a MySQL database using the connection, MySQL QCDI-BETA.
-
The Lake landing task, EnergyGen_Lake_landing ingests the raw data to an Amazon S3 bucket.
-
Next, the storage task, EnergyGen_Storage copies the data to a S3 location to store the data in Apache Iceberg format.
-
The Mirror data task, Redshift Mirror, creates the necessary views to enable the data to be queried from Redshift, and automatically refreshes the data.
-
The transformation task, Redshift_Energygen_Silver, is used to transform and consume the mirror data in Redshift.
-
Вторая задача данных Mirror, Snowflake Mirror, добавляется для создания необходимых представлений, чтобы данные можно было запрашивать из Snowflake.Задача Mirror использует управляемый Qlik механизм обновления, который позволяет выполнять последующие преобразования.
-
Задача преобразования, Snowflake_Energygen_Data_Products, используется для преобразования и потребления данных в Snowflake.
Механизм обновления
Механизм обновления, доступный вам, зависит от вашего поставщика облачного хранилища данных, как описано ниже.
Redshift
Данные, зеркалированные в Redshift, автоматически обновляются, и нет необходимости планировать или запускать задачу. Все имена таблиц и представлений преобразуются в нижний регистр в Redshift, поскольку Открытое озеро данных Qlik не поддерживает имена объектов с учетом регистра (база данных, схема, таблица или столбец).
Snowflake
Snowflake указывает на метаданные, в которых отражен последний снимок доступных данных в Iceberg. Есть два способа обновить метаданные:
-
Под управлением Qlik: эта опция может применяться при наличии активного хранилища Snowflake. Этот способ также позволяет контролировать и просматривать данные. Выберите эту опцию, если над данными потом будут производиться трансформации, а также если нужен мониторинг и выполнение задачи по расписанию. Qlik владеет операцией обновления метаданных, поэтому ее можно настроить вручную, — например, чтобы она выполнялась каждые 30 минут. Эта опция особенно эффективна в случае, когда в трансформациях участвуют несколько таблиц, так как обновление метаданных происходит сразу для всех таблиц. Несмотря на то, что этот механизм несколько проигрывает в скорости по сравнению с обновлением, выполняемым под управлением Snowflake, он позволяет сохранить согласованность между таблицами. Для преобразований с несколькими таблицами обновление может запускаться так часто, как это необходимо. Qlik рекомендует установить после задачи зеркалирования, выполняемой по расписанию, триггер для задач преобразований (трансформаций), запускаемый по событию.
-
Под управлением Snowflake: операция, которая не требует сервера. В этом случае используется инфраструктура Snowpipe, поэтому хранилище вычислений не требуется или не активируется. Эта опция рекомендуется, если последующая трансформация данных не производится. Интервал обновления настраивается при создании интеграции каталога Snowflake. Для отслеживания статуса автоматического обновления используйте запрос SYSTEM$AUTO_REFRESH_STATUS в Snowflake. Qlik в этом случае перестает быть владельцем процесса и не может контролировать задания такого типа.
The parquet file 'tg_open_lakehouse/bronze/sales/tables/tg_sales_ingestion_bronze__internal.order_details__internal/data/hdr__scd_partition=asset_state/2025_09_12_00_37_asset_state_apply-4bcbb2eb-4ad3-4d88-bea6-ea611576624e.parquet' for table 'OPENLAKEHOUSE."snowflake_mirror__internal"."ext__order_details"' was inaccessible.
Необходимые условия
Следующие требования применяются ко всем поддерживаемым целевым хранилищам данных:
-
Задача зеркалирования данных может быть добавлена только после создания задачи хранения в проекте Открытое озеро данных Qlik.
-
Задача хранения может иметь несколько задач зеркалирования данных, каждая из которых нацелена на отдельное хранилище данных.
-
Задача зеркалирования данных может быть связана только с одной задачей хранения.
-
Для выполнения преобразований создайте проект хранилища данных и используйте задачу Mirror data в качестве источника. Проект и задача Mirror должны использовать одну и ту же платформу хранилища данных, например, Redshift.
Чтобы зеркально отразить данные, настройте параметры для целевого хранилища данных.
Redshift
-
Подключение к базе данных хранилища данных, куда вы хотите зеркально отразить данные. По желанию, новое подключение можно создать во время создания задачи зеркалирования. Для получения дополнительной информации см. раздел Amazon Redshift.
-
Роль IAM, принимаемая Redshift, с разрешениями на чтение каталога данных Glue.Следующий скрипт предоставляет необходимые разрешения для доступа к вашему каталогу. Убедитесь, что вы заменили <ICEBERG_BUCKET_NAME> на имя вашего блока:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:GetDatabase", "glue:GetDatabases", "glue:GetTable", "glue:GetTables", "glue:GetPartition", "glue:GetPartitions" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::<ICEBERG_BUCKET_NAME>", "arn:aws:s3:::<ICEBERG_BUCKET_NAME>/*" ] } }Эта роль требует следующего отношения доверия:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "redshift-serverless.amazonaws.com" }, "Action": "sts:AssumeRole" }, { "Effect": "Allow", "Principal": { "Service": "redshift.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }Примечание к информацииДополнительные сведения см. в разделе Политики IAM для Amazon Redshift Spectrum. -
Внешняя схема в Redshift, которая указывает на базу данных задачи хранения. Необходимо создать внешнюю схему Redshift, выполнив команду CREATE EXTERNAL SCHEMA и указав на внутреннюю базу данных задачи хранения Iceberg источника. Внешние потребители должны использовать представления потребления схемы задачи зеркалирования. Чтобы создать внешнюю схему, используйте следующий синтаксис, убедившись, что свойство DATABASE является базой данных, созданной задачей хранения:
CREATE EXTERNAL SCHEMA <local_schema_name>
FROM DATA CATALOG
DATABASE '<database_name>'
IAM_ROLE 'arn:aws:iam::<AWS account-id>:role/<role-name>'
REGION '<aws-region>'
Snowflake
-
Подключение к базе данных хранилища данных, в которую вы хотите зеркально отразить свои данные. По желанию, новое подключение можно создать во время создания задачи зеркалирования. Для получения дополнительной информации см. раздел Snowflake.
-
Внешний том Snowflake. Это дает Snowflake ограниченный доступ к местоположению S3. Информация о настройке тома приводится в разделе Настройка внешнего тома для Amazon S3.
-
Интеграция с каталогом данных AWS Glue. Интеграция позволяет Snowflake подключаться к данным, хранящимся в формате открытой таблицы Iceberg в хранилище объектов. Информация об интеграции каталога приводится в разделе Настройка интеграции каталога для AWS Glue.
Создание задачи зеркалирования данных
Чтобы создать зеркало данных в вашем хранилище данных, выполните следующие действия:
-
Откройте проект, содержащий задачу хранения для данных, зеркало которых планируется использовать, .
-
Нажмите
Дополнительные действия на задаче хранения. Выберите и настройте Зеркальные данные:
-
Имя: Введите название для задачи зеркалирования.
-
Описание: При необходимости опишите цель задачи.
-
Хранилище данных: Выберите целевое хранилище данных.
-
Подключение:
-
Чтобы использовать существующее подключение, нажмите Выбрать. Откроется окно Безопасное подключение к источнику. Выберите Пространство, в котором находится подключение, и выберите подключение. Нажмите Редактировать, чтобы изменить свойства подключения.
-
Чтобы создать новое подключение, нажмите Создать подключение. Откроется диалоговое окно Создать подключение. Создайте подключение, следуя инструкциям в этом окне.
-
-
База данных: введите имя базы данных, которая будет содержать зеркало данных.
-
Для зеркалирования в Redshift:
-
Внешняя схема: Введите имя схемы, в которой будут созданы виды.
Примечание к информацииВсе имена таблиц и представлений преобразуются в нижний регистр в Redshift.
-
-
Для зеркалирования в Snowflake:
-
Внешний том Snowflake: введите имя внешнего тома, созданного в Snowflake.
-
Интеграция каталога Snowflake: введите имя интеграции, созданной в Snowflake.
-
Выберите механизм обновления данных в Snowflake:
-
Под управлением Qlik: выберите эту опцию, если потом над данными нужно будет производить преобразования.В этом случае необходимо активное хранилище Snowflake, процесс контролируется Qlik.
-
Под управлением Snowflake: выберите эту опцию, если преобразования над данными не производятся.Хранилище Snowflake не требуется, поэтому процесс не контролируется Qlik. Администрирование и контроль осуществляется в Snowflake.
-
-
-
Нажмите ОК, чтобы создать задачу зеркалирования и добавить ее к задаче хранения в вашем конвейере.
-
Нажмите кнопку
Другие действия на задаче зеркалирования и выберите Открыть. Убедитесь, что открыто окно Дизайн.
-
Чтобы выбрать нужные наборы данных из всех доступных, нажмите Выбрать исходные данные и удалите из списка все ненужные наборы данных.
-
Нажмите Подготовить, чтобы создать внешние объекты и зеркально отобразить данные.
Выполнение трансформаций
Для преобразования данных можно создать проект Redshift или Snowflake и использовать в проекте Открытое озеро данных Qlik задачу зеркалирования данных в качестве источника.Источник задачи зеркалирования должен быть той же платформой облачного хранилища данных, что и проект.Например, когда вы создаете проект Redshift для выполнения преобразований, вы должны использовать задачу зеркалирования данных Redshift в качестве источника.
Удаление задачи зеркалирования данных
При удалении задачи зеркалирования внутренние схемы и представления, созданные задачей зеркалирования, удаляются. Внешние схемы и таблицы в Redshift не удаляются. Если таблица удаляется из AWS Glue, например, когда пользователь удаляет набор данных в хранилище или удаляет всю задачу хранилища, изменение автоматически отражается во внешней схеме Redshift. Таблица удаляется и не требует отдельного удаления. В качестве рекомендации полностью удаляйте внешнюю схему, если она больше не используется.
Чтобы удалить задачу зеркалирования данных, выполните следующее:
-
На задаче зеркалирования данных откройте меню
Другие действия и нажмите Удалить. -
В диалоговом окне подтвердите действие, нажав Удалить.