UDTF projection
Stores newly-loaded data after it is transformed and/or aggregated by user-defined transformation functions (UDTFs). For details and examples, see Pre-aggregating UDTF results.
Important
Currently, projections can only reference UDTFs developed in C++.Syntax
CREATE PROJECTION [ IF NOT EXISTS ] [[database.]schema.]projection
[ (
{ projection-column | grouped-clause
[ ENCODING encoding-type ]
[ ACCESSRANK integer ] }[,...]
) ]
AS { [batch-query](#UDTFBatchQuery) FROM { prepass-query sq-ref | table [[AS] alias] }
| prepass-query }
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
Parameters
IF NOT EXISTS
If an object with the same name exists, do not create it and proceed. If you omit this option and the object exists, Vertica generates a ROLLBACK error message. In both cases, the object is not created if it already exists.
The
IF NOT EXISTS
clause is useful for SQL scripts where you want to create an object if it does not already exist.For related information, see ON_ERROR_STOP.
[
database
.]
schema
Specifies the schema for this projection and its anchor table, where
schema
must be the same for both. If you specify a database, it must be the current database.projection
Identifies the projection to create, where
projection
conforms to conventions described in Identifiers. It must also be unique among all names of sequences, tables, projections, views, and models within the same schema.projection-column
The name of a projection column. The list of projection columns must match the SELECT list columns and expressions in number, type, and sequence.
If projection column names are omitted, Vertica uses the anchor table column names specified in the SELECT list.
grouped-clause
- See GROUPED clause.
ENCODING
encoding-type
The column encoding type, by default set to AUTO.
ACCESSRANK
integer
Overrides the default access rank for a column. Use this parameter to increase or decrease the speed at which Vertica accesses a column. For more information, see Overriding Default Column Ranking.
AS SELECT
Specifies the table data to query:
{table-column | expr-with-table-columns } [ [AS] alias] }[,...]
You can optionally assign an alias to each column expression and reference that alias elsewhere in the SELECT statement.
Note
If you specify projection column names, the two lists of projection columns and table columns/expressions must exactly match in number and order.batch-udtf
(
batch-args
)
- The batch UDTF to invoke each time the following events occur:
-
Tuple mover mergeout
-
Queries on the projection
-
If invoked singly, on data load operations
Important
If the projection definition includes a pre-pass subquery,batch-args
must exactly match the pre-pass UDTF output columns, in name and order. -
prepass-udtf
(
prepass-args
)
- The pre-pass UDTF to invoke on each load operation such as COPY or INSERT.
If specified in a subquery, the pre-pass UDTF returns transformed data to the batch query for further processing. Otherwise, the pre-pass query results are added to projection data storage.
-
OVER (PARTITION { BATCH | PREPASS } BY partition-column-expr[,...]
- Specifies the UDTF type and how to partition the data it returns:
-
BATCH
identifies the UDTF as a batch UDTF. -
PREPASS
identifies the UDTF as a pre-pass UDTF.
In both cases, the OVER clause specifies partitioning with one or more column expressions from the SELECT list. The first
partition-column-expr
is the first column expression in the SELECT list, the secondpartition-column-expr
is the second column expression in the SELECT list, and so on.Note
The projection is implicitly segmented and ordered on PARTITION BY columns. -
-
AS (batch-output-columns) AS (prepass-output-columns)
- Optionally names columns that are returned by the UDTF.
If a pre-pass subquery omits this clause, the outer batch query UDTF arguments (
batch-args
) must reference the column names as they are defined in the pre-pass UDTF. table
[[AS]
alias
]
- Specifies the projection's anchor table, optionally qualified by an alias.
sq-results
- Subquery result set that is returned to the outer batch UDTF.
Privileges
Non-superusers:
-
Anchor table owner
-
CREATE privilege on the schema
-
EXECUTE privileges on all UDTFs that are referenced by the projection