UDTF 投影
在由用户定义的转换函数 (UDTF) 转换和/或聚合后存储新加载的数据。有关详细信息和示例,请参阅 预聚合 UDTF 结果。
重要
目前,投影只能引用 借助于 C++ 开发的 UDTF。语法
CREATE PROJECTION [ IF NOT EXISTS ] [[database.]schema.]projection
[ (
{ projection-column | grouped-clause
[ ENCODING encoding-type ]
[ ACCESSRANK integer ] }[,...]
) ]
AS { [batch-query](#UDTFBatchQuery) FROM { [prepass-query](#UDTFPrePassQuery) sq-ref | table [[AS] alias] }
| [prepass-query](#UDTFPrePassQuery) }
batch-query
SELECT { table-column | expr-with-table-columns }[,...], batch-udtf(batch-args)
OVER (PARTITION BATCH BY partition-column-expr[,...])
[ AS (batch-output-columns) ]
prepass-query
SELECT { table-column | expr-with-table-columns }[,...], prepass-udtf(prepass-args)
OVER (PARTITION PREPASS BY partition-column-expr[,...])
[ AS (prepass-output-columns) ] FROM table
参数
IF NOT EXISTS
如果存在同名对象,请不要创建它并继续。如果忽略此选项且对象存在,Vertica 将生成 ROLLBACK 错误消息。在上述两种情况下,如果对象已经存在,则不会创建它。
IF NOT EXISTS
子句适用于以下 SQL 脚本:可在某个对象不存在时创建该对象。请参阅 ON_ERROR_STOP 了解相关信息。
-
[database.]schema
为该投影及其锚表指定架构,两者的 schema 必须相同。如果指定一个数据库,它必须是当前数据库。
-
projection
标识要创建的投影,其中 projection 符合 标识符中描述的约定。同一架构中的序列、表、投影、视图和模型中也必须是唯一的。
-
projection-column
投影列的名称。投影列的列表必须在数量、类型和顺序上与 SELECT 列表列和表达式相匹配。
如果省略投影列名称,Vertica 将使用在 SELECT 列表中指定的锚表列名称。
-
grouped-clause
- 请参阅 GROUPED 子句。
-
ENCODING encoding-type
列编码类型,默认设置为 AUTO。
-
ACCESSRANK integer
覆盖列的默认访问等级。使用此参数可提高或降低 Vertica 访问列的速度。有关详细信息,请参阅覆盖默认的列等级。
AS SELECT
指定要查询的表数据:
{table-column | expr-with-table-columns } [ [AS] alias] }[,...]
您可以选择性地为每个列表达式分配一个别名,并在 SELECT 语句的其他位置引用该别名。
注意
如果指定了投影列名称,则投影列和表列/表达式的两个列表中的列数和列顺序必须完全匹配。-
batch-udtf(batch-args)
- 每当发生以下事件时要调用的 批量 UDTF:
-
Tuple Mover 合并
-
在投影上执行查询
-
在执行数据加载操作时进行单个调用
重要
如果投影定义包括预传递子查询,则 batch-args 在名称和顺序上必须与预传递 UDTF 输出列完全匹配。 -
-
prepass-udtf(prepass-args)
- 要在执行每个加载操作(例如 COPY 或 INSERT)时调用的 预传递 UDTF。
如果在子查询中指定,则预传递 UDTF 会将转换的数据返回给批量查询,以做进一步处理。否则,预传递查询结果将添加至投影数据存储。
-
OVER (PARTITION { BATCH | PREPASS } BY partition-column-expr[,...]
- 指定 UDTF 类型以及如何对其返回的数据进行分区:
在两种情况下,OVER 子句会指定要借助于 SELECT 列表中的一个或多个列表达式进行分区。第一个 partition-column-expr 是 SELECT 列表中的第一个列表达式,第二个 partition-column- expr 是 SELECT 列表中的第二个列表达式,依此类推。
注意
投影在 PARTITION BY 列上隐式地分段和排序。 -
AS (batch-output-columns) AS (prepass-output-columns)
- (可选)命名 UDTF 返回的列。
如果预传递子查询忽略此子句,则外部批量查询 UDTF 实参 (batch-args) 必须引用列名称,像它们在预传递 UDTF 中定义的那样。
-
table [[AS] alias]
- 指定投影的锚表,可选择性地由别名限定。
-
sq-results
- 返回到外部批量 UDTF 的子查询结果集。
特权
非超级用户:
-
锚表所有者
-
对架构的 CREATE 权限
-
对由投影引用的所有 UDTF 的 EXECUTE 权限
示例
请参阅 预聚合 UDTF 结果。