INSERT INTO statement in ksqlDB for Confluent Platform

Synopsis

INSERT INTO stream_name
  WITH ( property_name = expression [, ...] )
  SELECT select_expr [, ...]
  FROM from_stream
  [ LEFT | FULL | INNER ]
      JOIN [join_table | join_stream]
        [WITHIN [<size> <timeunit> | (<before_size> <timeunit>, <after_size> <timeunit>)] [GRACE PERIOD <grace_size> <timeunit>]]
      ON join_criteria
  [ WHERE condition ]
  [ PARTITION BY new_key_expr [, ...] ]
  EMIT CHANGES;

Description

Stream the result of the SELECT query into an existing stream and its underlying topic.

The schema and partitioning column(s) produced by the query must match the stream’s schema and key, respectively. If the schema and partitioning column(s) are incompatible with the stream, then the statement will return an error.

The stream_name and from_stream parameters must both refer to a Stream. Tables are not supported.

If the PARTITION BY clause is present, it is applied to the source after any JOIN or WHERE clauses, and before the SELECT clause, in much the same way as GROUP BY.

Records written into the stream are not timestamp-ordered with respect to other queries. Therefore, the topic partitions of the output stream may contain out-of-order records even if the source stream for the query is ordered by timestamp.

Insert properties

Use the WITH clause to specify details about your table. The WITH clause supports the following properties.

QUERY_ID

Optional query ID to use for INSERT INTO queries. This query ID will be displayed by SHOW QUERIES, and will also be used to terminate the query. If empty, the default ‘INSERTQUERY_’ prefix plus a number will be used. Queries IDs are case-insensitive. Queries IDs will be displayed in uppercase with SHOW QUERIES