Добавление преобразований SQL
В задачи преобразования можно включать таблицы на основе SQL. Преобразование SQL позволяет вводить запрос SQL SELECT в конвейер для определения сложных или простых преобразований. Можно использовать SQL assistant, чтобы создать запрос из текстовой строки с помощью генеративного ИИ. Также можно использовать макросы для адаптации запроса, чтобы он запускался в случае выполнения начальной загрузки или инкрементной загрузки.
Для получения дополнительной информации о создании задачи преобразования см. раздел Преобразование данных.
Добавление преобразования SQL
Чтобы добавить преобразование SQL в задачу данных Преобразование, выполните следующие действия.
-
В окне Преобразование выберите наборы данных, которые нужно включить в запрос, затем нажмите Добавить преобразование SQL.
Задайте имя преобразования в Name. Для получения дополнительной информации о других параметрах см. раздел Параметры.
Щелкните Добавить, когда будете готовы к созданию преобразования SQL.
Откроется окно Изменение преобразования SQL.
-
Напишите запрос для возврата таблицы на основе SQL в области запросов.
Для получения дополнительной информации см. раздел Изменение запроса SQL.
-
Нажмите Run query.
Это позволит получить метаданные и предварительный просмотр данных.
-
Просмотрите параметры в Parameters.
Для получения дополнительной информации см. раздел Параметры.
-
Установите первичный ключ в Metadata.
Для получения дополнительной информации см. раздел Метаданные.
-
Если запрос возвращает удовлетворительные результаты, нажмите Save and close. Набор данных добавлен в список целей и доступен для предварительного просмотра.
Изменение запроса SQL
Введите запрос, чтобы вернуть таблицу на основе SQL в области запросов. Запрос может считывать данные только из выбранных исходных наборов данных, но можно добавить другие исходные наборы данных с помощью кнопки Добавить.
-
Вы можете создать оператор для загрузки набора данных из Объектов. Нажмите
, а затем Генерировать оператор SELECT в редакторе.
-
Вы можете скопировать имя набора данных в буфер обмена, нажав
, а затем Копировать.
-
Нажмите >, чтобы переместить набор данных или имя столбца в редактор.
-
Нажмите
, чтобы найти и заменить текст в редакторе.
Когда применяется инкрементная загрузка, можно использовать макросы для адаптации запроса, чтобы он запускался в случае выполнения начальной загрузки или инкрементной загрузки.
Для получения дополнительной информации см. раздел Использование макросов для адаптации запроса в соответствии с типом загрузки.
Сочетания клавиш
-
Ctrl+F Найти и заменить
-
Ctrl+/ Закомментировать/раскомментировать текущую строку
-
Ctrl+Enter Выполнить запрос
-
Ctrl+Z Отменить
-
Ctrl+Y Повторить
Предварительный просмотр результатов
Можно предварительно просмотреть результаты, используя образец данных в Results.
Для предварительного просмотра данных требуются следующие роли:
-
Может просматривать данные в пространстве, где находится подключение.
-
Может просматривать в пространстве, где находится проект.
Отображаются результаты с использованием образца данных. Параметр Количество строк позволяет настроить, сколько строк требуется включить в образец.
-
Нажмите Last executed query, чтобы увидеть время последнего выполнения и длительность последнего выполненного запроса.
Фильтрация результатов
Вы можете фильтровать результаты по одному или нескольким столбцам.
-
Нажмите
на первом столбце для фильтрации, а затем Filter.
Выберите, какой оператор использовать и по какому значению фильтровать.
Вы можете добавить больше фильтров столбцов, нажав Add filter.
Фильтр затронет только существующие данные образца.
Сортировка результатов
Можно сортировать образец данных по конкретному столбцу.
-
Нажмите
на столбце для сортировки, а затем выберите Сортировать по возрастанию или Сортировать по убыванию.
Сортировка затронет только существующие данные образца. Если вы использовали фильтр, чтобы включить только заказы за 2024 год, и инвертировали порядок сортировки, данные образца по-прежнему будут содержать только заказы за 2024 год.
Управление отображаемыми столбцами
Вы можете выбрать, какие столбцы отображать в результатах. Выбор не сохраняется при сохранении преобразования.
-
Чтобы скрыть столбец, щелкните
на столбце и выберите Скрыть столбец.
-
Управляйте отображением всех столбцов, щелкнув
на любом столбце, а затем выбрав Отображаемые столбцы.
Параметры
Нажмите Параметры, чтобы изменить параметры в запросе SELECT. Параметры необходимо сопоставить с исходными или целевыми объектами.
Параметры автоматически сопоставляются, когда вы:
-
Используйте Генерировать оператор SELECT в редакторе в Объекты.
-
Нажмите >, чтобы переместить набор данных или имя столбца в редактор.
-
Имя параметра соответствует имени таблицы из таблиц в Объекты.
Можно выполнить сопоставление со следующими объектами:
-
Исторические структуры типа 2 (_history)
-
Текущие структуры
-
Целевые объекты
Можно сопоставлять целевые объекты, только когда параметр определен внутри инкрементного макроса.
Метаданные
Вы можете изменить настройки метаданных в Метаданные.
-
Задайте первичные ключи в столбце Ключ.
-
Задайте, допускает ли столбец нулевое значение, в столбце Допускает значение NULL.
-
Выберите столбец и щелкните Изменить, чтобы задать имя столбца, ключ, допустимость значения NULL и тип данных.
Выполнение запроса
Вы можете запустить запрос в любое время в процессе разработки, нажав Запустить запрос. При первом запуске запроса будут получены метаданные. После выполнения запроса вы можете перейти в Метаданные и установить первичный ключ, который необходим для завершения преобразования.
Использование макросов для адаптации запроса в соответствии с типом загрузки
Когда применяется инкрементная загрузка, можно использовать макросы для адаптации запроса, чтобы он запускался в случае выполнения начальной загрузки или инкрементной загрузки.
Выберите макрос и добавьте запрос внутри соответствующего предложения.
-
Q_RUN_INCREMENTAL добавляет приложение для размещения запроса, который выполняется только в случае инкрементной загрузки.
-
Q_RUN_INITIAL_LOAD добавляет приложение для размещения запроса, который выполняется только в случае начальной загрузки.
Не требуется указывать запрос полностью в каждом макросе. Можно корректировать или добавлять код с учетом конкретного сценария применения.
Пример использования: инкрементный фильтр с использованием диапазона дат.
В этом случае набор данных о заказах необходимо преобразовать с использованием пользовательского кода SQL. Так как это большой набор данных, необходимо включить инкрементную фильтрацию, чтобы при инкрементной загрузке обрабатывались только заказы за последние 12 часов.
Это базовый запрос:
Это фильтр, который будет применяться во время инкрементной загрузки, чтобы учитывались только заказы, добавленные за последние 12 часов:
Это полный запрос, в котором используется макрос фильтра и имена таблиц заменяются с использованием нотации ${TABLE}:
Таким образом создается запрос на начальную загрузку:
И запрос на инкрементную загрузку:
Пример использования: инкрементный фильтр с использованием данных в цели.
В этом случае набор данных о заказах необходимо преобразовать с использованием пользовательского кода SQL. Так как это большой набор данных, необходимо включить инкрементную фильтрацию, чтобы при инкрементной загрузке обрабатывались только записи с данными заказов, которые новее данных в целевой таблице. Также требуется пометить, обработана ли строка в ходе начальной загрузки или инкрементной загрузки.
Это базовый запрос:
Это фильтр, применяемый во время инкрементной загрузки. "ORDERS_DERIVED" — это имя целевой базы данных.
Это полный запрос, в котором используется макрос фильтра и имена таблиц заменяются с использованием нотации ${TABLE}. LOADED_BY имеет значение INIT, если загрузка начальная, и значение INCR, если загрузка инкрементная:
Таким образом создается запрос на начальную загрузку:
И запрос на инкрементную загрузку:
Параметры
Нажмите , чтобы изменить настройки преобразования SQL.
В поле Имя введите соответствующее имя целевого набора данных.
Также можно добавить более длинное описание в поле Описание.
В области Материализация выберите, требуется ли материализация преобразованного вывода. Можно выбрать наследование параметра из настроек задачи данных.
-
Значение Вкл будет создавать таблицы и осуществлять связанную обработку ELT.
-
Значение Выкл будет создавать виды, которые выполняют преобразования на ходу.
В разделе Хранилище исторических данных (тип 2) выберите, нужно ли хранить исторические данные. Можно выбрать наследование параметра из настроек задачи данных. Эта настройка требует, чтобы параметр Материализация был включен.
Параметр Инкрементная загрузка позволяет корректировать запрос для инкрементной загрузки данных путем применения фильтров или других условий, чтобы уменьшить набор данных, обрабатываемый с помощью макросов. Параметр Инкрементная загрузка доступен, только если данные материализованы как таблицы.
-
Когда параметр Инкрементная загрузка имеет значение Вкл
При первом выполнении задачи происходит начальная загрузка, при этом все результаты по запросу вставляются в целевую таблицу. При последующих выполнениях задачи происходят инкрементные загрузки с использованием фильтров или специальных условий, определенных для инкрементной обработки. Во время инкрементной загрузки задача обрабатывает данные только как обновление или вставку, удаления не обрабатываются.
-
Когда параметр Инкрементная загрузка имеет значение Выкл
При первом выполнении задачи происходит начальная загрузка, при этом все результаты по запросу вставляются в целевую таблицу. При последующих выполнениях все результаты запроса сравниваются с целевой таблицей, а затем обрабатываются новые, измененные или удаленные записи.
Рекомендации
-
При добавлении преобразования SQL первичный ключ не определяется автоматически. Ключ следует добавить к набору данных во вкладке Набор данных.
-
Не создавайте вручную заголовки столбцов в преобразованных выходных данных.
-
Не рекомендуется использовать SELECT вместе с *, так как в результате этого при каждом запросе могут возвращаться разные столбцы. Если схема изменена, внесите соответствующие изменения в запрос и выполните команду Описать таблицу еще раз. После этого можно изменять столбцы и настраивать таблицы.