Применение преобразования SQL

В этой статье описывается компонент конструктора Машинного обучения Azure.

С помощью компонента применения преобразования SQL можно:

  • создать таблицу для результатов, а затем сохранить наборы данных в переносимой базе данных;

  • выполнять пользовательские преобразования типов данных или создавать статистические выражения;

  • выполнять инструкции SQL-запроса для фильтрации или изменения данных и получения результатов запроса в виде таблицы данных.

Важно!

В этом компоненте используется подсистема SQL SQLite. Дополнительные сведения о синтаксисе SQLite см. в статье Поддержка SQL в SQLite. Этот компонент будет отправлять данные в SQLite — базу данных в памяти, поэтому его выполнение требует значительно большего объема памяти и может привести к ошибке Out of memory. Убедитесь, что на компьютере достаточно ОЗУ.

Как настроить модуль "Применение преобразования SQL"

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

Ниже приведен пример кода, демонстрирующий соединение двух таблиц. t1 и t2 — это два набора данных, подключенных к левому и среднему входным портам модуля применения преобразования SQL.

SELECT t1.*
    , t3.Average_Rating
FROM t1 join
    (SELECT placeID
        , AVG(rating) AS Average_Rating
    FROM t2
    GROUP BY placeID
    ) as t3
on t1.placeID = t3.placeID

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

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

Технические примечания

В этом разделе содержатся сведения и советы относительно реализации, а также ответы на часто задаваемые вопросы.

  • На порт 1 всегда должны подаваться входные данные.

  • Для ссылки на идентификаторы столбцов, содержащих пробел или другие специальные символы, используйте квадратные скобки или двойные кавычки в предложениях SELECT и WHERE.

  • Если вы использовали модуль Изменение метаданных для указания метаданных столбцов (категориальных или полей) до модуля Применение преобразования SQL, этих атрибутов не будет в выходных данных модуля Применение преобразования SQL. Модуль Изменение метаданных следует использовать для редактирования столбца после использования модуля Применение преобразования SQL.

Неподдерживаемые инструкции

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

  • SQLite использует динамическую типизацию значений, а не присвоение типа столбцу, как в большинстве систем реляционных баз данных. Кроме того, для нее характерна слабая типизация. Система также позволяет выполнять неявное преобразование типов.

  • Соединение LEFT OUTER JOIN реализовано, RIGHT OUTER JOIN и FULL OUTER JOIN — нет.

  • Можно использовать инструкции RENAME TABLE и ADD COLUMN с командой ALTER TABLE, но другие предложения не поддерживаются, в том числе DROP COLUMN, ALTER COLUMN и ADD CONSTRAINT.

  • Вы можете создать VIEW в SQLite, но последующие представления будут доступны только для чтения. Невозможно выполнить инструкцию DELETE, INSERT или UPDATE для представления. Но вы можете создать триггер, срабатывающий при попытке выполнить инструкцию DELETE, INSERT или UPDATE для представления, и выполнить другие операции в теле триггера.

Помимо списка неподдерживаемых функций, предоставленного на официальном сайте SQLite, в следующей вики-статье приведен список других неподдерживаемых функций: SQLite: неподдерживаемые функции SQL

Дальнейшие действия

Ознакомьтесь с набором доступных компонентов для Машинного обучения Azure.