計算列は、他の列のデータを使用して、それが属する列の値を計算できます。 ソーステーブルに TIMESTAMP 型の列がない場合は、計算列を使用して、別の型のフィールドを TIMESTAMP 型に変換できます。
コンセプト
計算列は、テーブルに物理的に格納されていない仮想列です。 式、ビルトイン関数、または UDF を使用することにより、計算列は他の列のデータを使用して、それが属する列の値を計算できます。 計算列は、Flink SQL の共通フィールドとして使用できます。
使用方法
現在、透かしの [イベント時間] 列 (rowtime 列とも呼ばれます) は、TIMESTAMP 型のみをサポートしています。 LONG 型は今後サポートされる予定です。 透かしは、ソーステーブルの DDL でのみ定義できます。 ソーステーブルに TIMESTAMP 型の列がない場合は、計算列を使用して、別の型のフィールドを TIMESTAMP 型に変換できます。
構文
column_name AS computed_column_expression
例
透かしの rowtime 列は、TIMESTAMP 型である必要があります。 現在、Realtime Compute は、ミリ秒単位の 13 桁の UNIX タイムスタンプをサポートしています。 DataHub の TIME フィールドの値がマイクロ秒 (つまり、16 桁の UNIX タイムスタンプ) の場合、計算列を使用して 13 桁の UNIX タイムスタンプに変換できます。 サンプルコードは次のとおりです。
CREATE TABLE test_stream(
a INT,
b BIGINT,
`TIME` BIGINT,
ts AS TO_TIMESTAMP(TIME/1000), -- Use a computed column to convert a 16-digit timestamp to a 13-digit timestamp.
WATERMARK FOR ts AS WITHOFFSET(ts, 1000)
) WITH (
type = 'datahub',
...
);
前の例に示すように、ソーステーブルの TIME
フィールドは BIGINT 型です。 計算列を使用すると、TIME
フィールドは TIMESTAMP 型の ts
フィールドに変換されます。 次に、ts
フィールドは透かしの rowtime フィールドとして使用されます。