You can calculate a value for a computed column by using data from other columns. If your source table does not have a column of the TIMESTAMP type, you can use a computed column to convert a field of another type to the TIMESTAMP type.
A computed column is a virtual column that is not stored in a physical table. You can create computed columns by using expressions, built-in functions, or user-defined extensions (UDXs). In Flink SQL, a computed column can be used the same as columns that are stored in a physical table.
Currently, the event time (also known as rowtime) column in a Watermark must be of the TIMESTAMP type. The LONG data type will be supported in the future. You can only define a watermark in the DDL statement of a source table. If a source table does not have a column of the TIMESTAMP type, you can use a computed column to convert a field of another type to the TIMESTAMP type.
column_name AS computed_column_expression
The rowtime column in a watermark must be of the TIMESTAMP type. Currently, Realtime Compute only supports 13-bit UNIX timestamps measured in milliseconds. If the TIME column in a DataHub source table is defined as a 16-bit UNIX timestamp measured in microseconds, you can use a computed column to convert the 16-bit UNIX timestamp to a 13-bit UNIX timestamp. The sample code is as follows:
CREATE TABLE test_stream( a INT, b BIGINT, `TIME` BIGINT, ts AS TO_TIMESTAMP(`TIME`/1000), -- Use a computed column to convert 16-bit timestamps to 13-bit timestamps. WATERMARK FOR ts AS WITHOFFSET(ts, 1000) ) WITH ( type = 'datahub', ... );
`TIME` field in the source table contains the date and time information. The value of this
field is of the BIGINT type. A computed column is created to convert the
TIME column of the BIGINT type to the
ts column of the TIMESTAMP type. The
ts column is used as the rowtime of a watermark.