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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Выберите оператор и значение для фильтрации.

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

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

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

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

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

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

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

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

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

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

Параметры

Нажмите Параметры, чтобы изменить параметры в запросе 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 с символом *, так как это может возвращать разные столбцы при каждом запуске запроса. Если в схеме произошли изменения, измените запрос соответствующим образом и снова выполните команду Описать таблицу. После этого вы сможете редактировать столбцы и настраивать таблицы.

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

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