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

Добавление преобразований SQL

Вы можете включать таблицы на основе SQL в задачи преобразования. Преобразование SQL позволяет ввести запрос SQL SELECT в конвейер для определения сложных или простых преобразований. Вы можете позволить SQL assistant сгенерировать запрос из текстовой подсказки с помощью генеративного ИИ. Вы также можете использовать макросы для адаптации запроса к выполнению при первоначальной или инкрементальной загрузке.

Вы можете использовать SQL workbench для исследования данных и проверки SQL только для чтения перед добавлением SQL в преобразование. Для получения дополнительной информации см. Исследование данных с помощью SQL Workbench.

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

Добавление преобразования SQL

Чтобы добавить преобразование SQL в задачу данных Преобразование:

  1. В разделе Преобразование выберите наборы данных для включения в запрос и нажмите Добавить преобразование SQL.

    Задайте имя преобразования в поле Имя. Для получения дополнительной информации о других настройках см. Настройки.

    Нажмите Добавить, когда будете готовы создать преобразование SQL.

    Отобразится Изменить преобразование SQL.

  2. Напишите запрос для возврата таблицы на основе SQL на панели запросов.

    Для получения дополнительной информации см. Редактирование запроса SQL.

  3. Нажмите Выполнить запрос.

    Это позволит получить метаданные и предварительный просмотр данных.

  4. Просмотрите параметры в разделе Параметры.

    Для получения дополнительной информации см. Параметры.

  5. Задайте первичный ключ в разделе Метаданные.

    Для получения дополнительной информации см. Метаданные.

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

Редактирование запроса SQL

Введите запрос для возврата таблицы на основе SQL на панели запросов. Запрос может читать только из выбранных вами исходных наборов данных, но вы можете добавить больше исходных наборов данных с помощью кнопки Добавить.

  • Вы можете создать оператор для загрузки набора данных из раздела Объекты. Нажмите дополнительно, а затем Добавить оператор SELECT.

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

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

  • Нажмите Поиск для поиска и замены текста в редакторе.

Примечание к информацииВы можете использовать SQL assistant для генерации запроса с помощью генеративного ИИ. Для получения дополнительной информации см. Создание преобразования SQL из текстового запроса. SQL assistant недоступен в Qlik Cloud для правительства.

Если используется инкрементальная загрузка, вы можете использовать Макросы для адаптации запроса к выполнению при первоначальной или инкрементальной загрузке.

Для получения дополнительной информации см. Использование макросов для адаптации запроса к типу загрузки.

Сочетания клавиш

Примечание к информацииСочетания клавиш указаны в предположении, что вы работаете в Windows. Для macOS используйте Command вместо Ctrl.
  • Ctrl+F Поиск и замена

  • Ctrl+/ Закомментировать/раскомментировать текущую строку

  • Ctrl+Enter Выполнить запрос

  • Ctrl+Z Отменить

  • Ctrl+Y Повторить

Предварительный просмотр результатов

Вы можете предварительно просмотреть результаты, используя данные образца в разделе Результаты.

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

Вам должны быть назначены следующие роли, чтобы иметь возможность предварительного просмотра данных:

  • Может просматривать данные в пространстве, где находится подключение.

  • Может просматривать в пространстве, где находится проект.

Отображаются результаты с использованием данных образца. Вы можете задать количество строк данных для включения в образец с помощью параметра Количество строк.

  • Нажмите Последний выполненный запрос, чтобы увидеть время последнего запуска и продолжительность последнего выполненного запроса.

Фильтрация результатов

Вы можете отфильтровать результаты по одному или нескольким столбцам.

  • Нажмите дополнительно на первом столбце для фильтрации, а затем Фильтр.

    Выберите, какой оператор использовать и по какому значению фильтровать.

    Вы можете добавить больше фильтров столбцов, нажав Добавить фильтр.

Фильтр повлияет только на существующие данные образца.

Сортировка результатов

Вы можете отсортировать данные образца по определенному столбцу.

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

Сортировка повлияет только на существующие данные образца. Если вы использовали фильтр, чтобы включить только заказы за 2024 год, и инвертировали порядок сортировки, данные образца по-прежнему будут содержать только заказы за 2024 год.

Управление отображаемыми столбцами

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

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

  • Управляйте отображением всех столбцов, нажав дополнительно на любом столбце, а затем Отображаемые столбцы.

Параметры

Нажмите Параметры, чтобы изменить параметры в запросе SELECT. Параметры должны быть сопоставлены с исходными или целевыми объектами.

Параметры сопоставляются автоматически, когда вы:

  • Используете Добавить оператор SELECT в разделе Объекты.

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

  • Имя параметра совпадает с именем таблицы из таблиц в разделе Объекты.

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

Вы можете сопоставить с

  • Структурами истории типа 2 (_history)

  • Текущими структурами

  • Целевыми объектами

    Вы можете сопоставить целевые объекты только тогда, когда параметр определен внутри инкрементального макроса.

Примечание к подсказкеВы можете заменить параметр ссылкой, чтобы запрос было легче читать. Измените значение в поле Параметр, и ссылка в Запрос SELECT также изменится.

Метаданные

Вы можете изменить настройки метаданных в разделе Метаданные.

  • Задайте первичные ключи в столбце Ключ.

    Вы можете получить предложения подходящих первичных ключей и проверить ключи, нажав Предложить и проверить ключи.

  • Укажите, может ли столбец содержать значения NULL, в столбце Допускает значения NULL.

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

Предложение и проверка ключей

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

  • GenAI используется для предложения ключей, если вы согласились на межрегиональный логический вывод. Это позволяет Qlik Cloud отправлять запросы на логический вывод за пределы региона вашего клиента. Для получения подробной и актуальной информации о местах обработки логического вывода см. Включение межрегионального инференса.

    Примечание к информацииQlik не контролирует сгенерированный вывод. Из-за природы GenAI ответы могут не создавать SQL, который соответствует вашим требованиям, без проверки или редактирования. Сгенерированный запрос считается «Контентом» в соответствии с условиями Клиентского соглашения Qlik.
    Примечание о Qlik Cloud для правительства

    Предложение ключей с помощью GenAI недоступно в Qlik Cloud для правительства.

    Если GenAI не включен, ключи будут предложены программно на основе данных исходной таблицы.

  • Проверка всегда будет выполняться без использования GenAI путем выполнения запроса SQL, чтобы убедиться, что нет дубликатов или значений NULL.

    Примечание к информацииПроверка доступна только тогда, когда запрос вернул данные.
  • Предложить и проверить ключи

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

  • Проверить ключи

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

  • Предложить без проверки

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

Выполнение запроса

Вы можете выполнить запрос в любое время во время разработки, нажав Выполнить запрос. При первом выполнении запроса будут получены метаданные. Когда запрос будет выполнен, вы можете перейти в раздел Метаданные и задать первичный ключ, который требуется для завершения преобразования.

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

Использование макросов для адаптации запроса к типу загрузки

Если используется инкрементальная загрузка, вы можете использовать Макросы для адаптации запроса к выполнению при первоначальной или инкрементальной загрузке.

Выберите макрос и добавьте запрос внутри соответствующего предложения.

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

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

Вам не нужно указывать полный запрос с каждым макросом. Вы можете настроить или добавить код в зависимости от вашего варианта использования.

Вариант использования: Инкрементальный фильтр с использованием диапазона дат:

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

Это базовый запрос:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Это фильтр, применяемый во время инкрементального выполнения, где вы учитываете только заказы, добавленные за последние 12 часов:

WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP())
Примечание к подсказкеПри реализации таблицы на основе SQL рекомендуется заменять имена таблиц нотацией ${TABLE}. Это предотвращает жесткое кодирование имен баз данных и схем, которые могут меняться от среды к среде, например, при переходе от разработки к рабочей среде.

Это полный запрос с использованием макроса фильтра и с именами таблиц, замененными нотацией ${TABLE}:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() ) {{/QLIK_FUNC_IF}}

Это приводит к запросу первоначальной загрузки:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

И запросу инкрементальной загрузки:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM > DATEADD(hour, -12, CURRENT_TIMESTAMP() )

Вариант использования: Инкрементальный фильтр с использованием данных в цели:

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

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

Это базовый запрос:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT , OD.LAST_UPDATE_DTM FROM “mydb”.”myStorageTask”.”ORDER” O JOIN “mydb”.”myStorageTask”.”ORDER_DETAIL” OD ON O.ORDER_ID = OD.ORDER_ID

Это фильтр, применяемый во время инкрементального выполнения. “ORDERS_DERIVED” — это имя целевого набора данных.

WHERE OD.UPDATE_DTM > = (SELECT MAX(LAST_UPDATE_DTM) FROM “mydb”.”myTrasformTask”.”ORDERS_DERIVED” )
Примечание к подсказкеИнкрементальная загрузка также может сопоставить нотацию ${TABLE} с целевыми объектами, созданными задачей преобразования.

Это полный запрос с использованием макроса фильтра и с именами таблиц, замененными нотацией ${TABLE}. Для LOADED_BY задано значение INIT, если загрузка первоначальная, и INCR, если загрузка инкрементальная:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, {{#QLIK_FUNC_IF Q_RUN_INITIAL_LOAD}} ‘INIT’ as LOADED_BY {{/QLIK_FUNC_IF}} {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} ‘INCR’ as LOADED_BY {{/QLIK_FUNC_IF}} FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID {{#QLIK_FUNC_IF Q_RUN_INCREMENTAL}} WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} ) {{/QLIK_FUNC_IF}}

Это приводит к запросу первоначальной загрузки:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INIT’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID

И запросу инкрементальной загрузки:

SELECT O.ORDER_ID, O.CUSTOMER_ID, OD.PRODUCT_ID, OD.QUANTITY, O.AMOUNT, OD.LAST_UPDATE_DTM, ‘INCR’ as LOADED_BY FROM ${ORDER} O JOIN ${ORDER_DETAIL} OD ON O.ORDER_ID = OD.ORDER_ID WHERE OD.UPDATE_DTM >= (SELECT MAX(LAST_UPDATE_DTM) FROM ${TARGET_TABLE} )

Настройки

Нажмите Настройки, чтобы изменить настройки преобразования SQL.

  • В поле Имя введите соответствующее имя целевого набора данных.

    Также можно добавить более длинное описание в поле Описание.

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

    • Значение Вкл будет создавать таблицы и осуществлять связанную обработку ELT.

    • Значение Выкл будет создавать виды, которые выполняют преобразования на ходу.

  • В разделе Хранилище исторических данных (тип 2) выберите, нужно ли хранить исторические данные. Можно выбрать наследование параметра из настроек задачи данных. Эта настройка требует, чтобы параметр Материализация был включен.

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

    • Когда параметр Инкрементная загрузка имеет значение Вкл

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

    • Когда параметр Инкрементная загрузка имеет значение Выкл

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

    Примечание к информацииЕсли запрос выбирает все записи, которые должны существовать в цели, установите для параметра Инкрементная загрузка значение «Выкл». Записи, которые не выбраны, будут удалены из цели.
  • Рекомендации

    • При добавлении преобразования SQL первичный ключ не определяется автоматически. Добавьте ключ к набору данных на вкладке Набор данных.

    • Не создавайте заголовки столбцов в преобразованном выводе вручную.

    • Избегайте использования SELECT с *, так как это может возвращать разные столбцы при каждом выполнении запроса. Если в схеме произошли изменения, измените запрос соответствующим образом и снова выполните Описать таблицу. Затем вы сможете редактировать столбцы и настраивать таблицы.

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

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