一時テーブル(非推奨)
一時テーブル機能は非推奨です。本番環境での使用は推奨されません。
複雑なデータ処理では、大きな SQL クエリを複数のステップに分割し、各ステップの結果を実体化されたテーブルとして一時的に保存する方法が有効です。これにより、SQL クエリの複雑さが大幅に減り、データのデバッグが容易になります。ただし、実体化されたテーブルは役目を終えた後に手動で削除する必要があります。実体化しない一時テーブルを使用する場合、現在 Doris で定義できるのは WITH 句を使う方法のみです。
これらの課題に対処するため、Doris は一時テーブル機能を導入しました。一時テーブルは、一時的に存在する実体化された内部テーブルです。複雑なデータ処理における一時データの保存と管理を簡素化し、データ処理の柔軟性と安全性をさらに高めます。
主な特徴
| 特徴 | 説明 |
|---|---|
| セッションに紐づく | 一時テーブルは作成したセッション内にのみ存在し、そのライフサイクルは現在のセッションに密接に紐づきます。セッションが終了すると、そのセッションで作成されたすべての一時テーブルが自動的に削除されます。 |
| セッション内でのみ参照可能 | 一時テーブルを参照できるのは、作成したセッションに限られます。同じユーザーが同時に開始した別のセッションからも、これらの一時テーブルにはアクセスできません。 |
| 柔軟な命名 | 一時テーブルの名前には一意性の制約がありません。異なるセッションで同じ名前の一時テーブルを作成でき、別の内部テーブルと同じ名前の一時テーブルも作成できます。 |
内部テーブルと同様に、一時テーブルは Internal Catalog 内の Database に作成する必要があります。
同じ Database に同名の一時テーブルと通常のテーブルが存在する場合、一時テーブルへのアクセスが優先されます。そのセッション内では、その名前のテーブルに対するすべてのクエリと操作が一時テーブルに対してのみ実行されます(マテリアライズドビューの作成を除きます)。
適用シナリオ
一時テーブルは、次のデータ処理シナリオに適しています。
- 複雑な SQL の分割:大きなクエリを複数のステップに分割し、中間結果を段階的に実体化して、単一の SQL 文の複雑さを抑えます。
- 中間結果の一時保存:ETL、データ探索、レポート開発で中間計算結果を保存し、計算の繰り返しを避けます。
- データのデバッグと検証:各ステップの結果を実体化し、確認や検証を容易にして、デバッグしやすくします。
- セッションごとに分離されたデータ処理:データをセッション内でのみ参照できるようにし、セッション終了時に自動的に回収することで、残存データによる影響を避けたい場合に適しています。
使用方法
一時テーブルの作成
Unique、Aggregate、Duplicate の各モデルを含む、どのモデルのテーブルも一時テーブルとして定義できます。次の SQL 文に TEMPORARY キーワードを追加すると、一時テーブルを作成できます。
一時テーブルの操作
一時テーブルのその他の使い方は、通常の内部テーブルと基本的に同じです。上記の CREATE 文を除き、その他の DDL 文や DML 文では TEMPORARY キーワードは不要です。
制限事項
- 一時テーブルを作成できるのは Internal Catalog 内のみです。
- テーブルの作成時、ENGINE は OLAP である必要があります。
- Alter 文による一時テーブルの変更はサポートされていません。
- 一時テーブルは一時的に存在するため、一時テーブルに基づくビューやマテリアライズドビューの作成はサポートされていません。
- 一時テーブルのバックアップ、および Sync Job による同期はサポートされていません。
- Export、Stream Load、Broker Load、S3 Load、Mysql Load、Routine Load はサポートされていません。
- 一時テーブルを削除すると、ごみ箱には移動されず、完全に削除されます。