应用 SQL 转换

本文介绍 Azure 机器学习设计器的一个组件。

使用“应用 SQL 转换”组件,可以执行以下操作:

  • 创建结果表,并将数据集保存在便携式数据库中。

  • 对数据类型执行自定义转换,或创建聚合。

  • 执行 SQL 查询语句,筛选或更改数据,并以数据表的形式返回查询结果。

重要

此组件中使用的 SQL 引擎是 SQLite。 有关 SQLite 语法的详细信息,请参阅 SQL as Understood by SQLite。 此组件将数据转储到 SQLite(位于内存数据库中),因此此组件执行会需要更多内存,并且可能会遇到 Out of memory 错误。 确保计算机具有足够的 RAM。

如何配置应用 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

剩余参数是使用 SQLite 语法的 SQL 查询。 在“SQL 脚本”文本框中键入多行时,请使用分号终止每条语句。 否则,换行符会转换为空格。

此组件支持 SQLite 语法的所有标准语句。 如需了解不支持的语句列表,请参阅技术说明部分。

技术说明

本部分包含实现详情、使用技巧和常见问题解答。

  • 端口 1 上始终需要输入。

  • 对于包含空格或其他特殊字符的列标识符,请在 SELECT 和 WHERE 子句中引用列时,始终将列标识符用方括号或双引号括起来。

  • 如果在应用 SQL 转换之前已使用编辑元数据指定列元数据(分类或字段),则应用 SQL 转换的输出将不包含这些属性。 在应用 SQL 转换后,需要使用编辑元数据来编辑列。

不支持的语句

尽管 SQLite 支持很多 ANSI SQL 标准,但其并不包括商业关系数据库系统支持的许多功能。 有关详细信息,请参阅 SQL as Understood by SQLite。 另外,请在创建 SQL 语句时注意以下限制:

  • SQLite 使用动态类型的值,而不是像在大多数关系数据库系统中的那样将类型分配给列。 它是一种弱类型,并允许隐式转换类型。

  • 实现 LEFT OUTER JOIN,但不实现 RIGHT OUTER JOIN 或 FULL OUTER JOIN。

  • 你可将 RENAME TABLE 和 ADD COLUMN 语句与 ALTER TABLE 命令结合使用,但不支持其他子句,例如 DROP COLUMN、ALTER COLUMN 和 ADD CONSTRAINT。

  • 可在 SQLite 中创建“视图”,但之后视图为只读。 不可在视图中执行 DELETE、INSERT 或 UPDATE 语句。 但可创建一个触发器,尝试在视图上执行 DELETE、INSERT 或 UPDATE,并在触发器主体中执行其他操作。

除了在官方 SQLite 网站上提供不受支持的功能列表,下面的 Wiki 还提供其他不受支持的功能列表:SQLite - 不受支持的 SQL

后续步骤

请参阅 Azure 机器学习可用的组件集。