計算列は、他の列のデータを使用して、それが属する列の値を計算できます。 ソーステーブルに 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 フィールドとして使用されます。