すべてのプロダクト
Search
ドキュメントセンター

Realtime Compute for Apache Flink:UNION ALL

最終更新日:Jan 08, 2025

このトピックでは、デプロイメントの SQL ステートメントで UNION ALL を変更した後、デプロイメントと状態データ間の互換性がどのように影響を受けるかについて説明します。

互換性に影響を与えない、または部分的に影響を与える変更

UNION ALL で入力クエリの順序を変更します。この変更は、ダウンストリームのステートフル演算子の状態データの互換性には影響しません。

create table MyTable2 (
  a int,
  b bigint,
  c varchar,
  d int
);

-- 元の SQL ステートメント:
select a, sum(b), max(c) from (
  select a, b, c from MyTable union all select a, b, c from MyTable2
) group by a;


-- UNION ALL で入力クエリの順序を変更します。この変更後も、デプロイメントは状態データと完全に互換性があります。
select a, sum(b), max(c) from (
  select a, b, c from MyTable2 union all select a, b, c from MyTable
) group by a;

完全な非互換性を引き起こす変更

UNION ALL に入力クエリを追加、または UNION ALL から入力クエリを削除します。この変更は、ダウンストリームのステートフル演算子の状態データの非互換性を引き起こします。

create table MyTable2 (
  a int,
  b bigint,
  c varchar,
  d int
);

-- 元の SQL ステートメント:
select a, sum(b), max(c) from (
  select a, b, c from MyTable union all select a, b, c from MyTable2
) group by a;

create table MyTable3 (
  a int,
  b bigint,
  c varchar,
  d int
);

-- UNION ALL に入力クエリを追加します。この変更後、デプロイメントは状態データと互換性がなくなります。
select a, sum(b), max(c) from (
  select a, b, c from MyTable
  union all
  select a, b, c from MyTable2
  union all
  select a, b, c from MyTable3
) group by a;