0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Databricksに一時テーブルが追加されたので一時ビューとの使い分けを考える

Last updated at Posted at 2026-01-23

はじめに

Databricksに新しく一時テーブル(Temporary Table) 機能がパブリックプレビューとして追加されました。従来から存在する一時ビュー(Temporary View)と似ているようで異なるこの機能、どう使い分けるべきか整理してみました。

一時テーブルとは

一時テーブルは、Databricksセッションの期間中のみデータを保持するテーブルです。カタログに永続テーブルを作成せずに、探索的分析やSQLパイプラインの中間結果をマテリアライズできます。

主な特徴は以下の通りです。

  • セッション終了時に自動削除(最大7日間)
  • Unity CatalogのCREATE TABLE権限が不要
  • 他のユーザーからは見えない(セッション分離)
  • DML操作(INSERT/UPDATE/MERGE)が可能
  • 現時点ではSQLウェアハウスのみ対応

一時テーブルと一時ビューの違い

両者の根本的な違いはデータの保持方法です。

観点 一時テーブル 一時ビュー
データ保持 物理的に保存(マテリアライズ) クエリ定義のみ保存
実行タイミング 作成時に1回だけ実行 参照するたびに実行
DML操作 INSERT/UPDATE/MERGE可能 不可(読み取り専用)
ストレージ クラウドストレージを消費 消費しない
DataFrame API 未対応 createOrReplaceTempView()対応
対応コンピュート SQLウェアハウスのみ 全コンピュートタイプ
最大有効期間 7日間 セッション終了まで

一時テーブルを試してみる

一時テーブルの作成

空のテーブルを定義して作成する方法と、クエリ結果から作成する方法があります。

-- 空の一時テーブルを作成
CREATE TEMPORARY TABLE temp_customers (
  id INT,
  name STRING,
  email STRING
);
OK
-- クエリ結果から一時テーブルを作成
CREATE TEMP TABLE temp_sample_data AS
VALUES
  (1, 'Alice', 100.00),
  (2, 'Bob', 200.00),
  (3, 'Charlie', 150.00)
AS t(id, name, amount);

Screenshot 2026-01-23 at 17.25.20.png

一時テーブルのクエリ

単一パート名で参照します。カタログやスキーマの指定は不要です。

SELECT * FROM temp_sample_data;

Screenshot 2026-01-23 at 17.25.58.png

DML操作

一時ビューではできないDML操作が可能です。

-- データの挿入
INSERT INTO temp_customers VALUES (101, 'Jane Doe', 'jane@example.com');

SELECT * FROM temp_customers;

Screenshot 2026-01-23 at 17.26.51.png

-- データの更新
UPDATE temp_sample_data
SET amount = amount * 1.1
WHERE id = 1;

SELECT * FROM temp_sample_data;

Screenshot 2026-01-23 at 17.27.29.png

一時テーブルの削除

セッション終了時に自動削除されますが、明示的に削除することも可能です。

DROP TEMP TABLE IF EXISTS temp_customers;
DROP TEMP TABLE IF EXISTS temp_sample_data;

Screenshot 2026-01-23 at 17.28.02.png

使い分けの判断フロー

どちらを使うか迷ったら、以下のフローで判断できます。

  1. DML操作が必要? → Yes → 一時テーブル
  2. 同じ結果を複数回参照する? → Yes → 一時テーブル(計算コスト削減)
  3. DataFrameとの連携が必要? → Yes → 一時ビュー
  4. 常に最新データが必要? → Yes → 一時ビュー
  5. SQLウェアハウス以外で使う? → Yes → 一時ビュー
  6. それ以外 → 一時ビュー(軽量でシンプル)

一時テーブルが向いているケース

重い集計結果を複数回参照する場合、一時テーブルなら1回の計算で済みます。

-- 重い集計を1回だけ実行してキャッシュ
CREATE TEMP TABLE temp_daily_summary AS
SELECT date, SUM(amount) as total
FROM prod.sales.orders
GROUP BY date;

-- 何度参照しても再計算されない
SELECT * FROM temp_daily_summary WHERE total > 10000;
SELECT AVG(total) FROM temp_daily_summary;

一時ビューが向いているケース

DataFrameで前処理した結果をSQLで分析したい場合は一時ビュー一択です。

# DataFrameで複雑な前処理
df = (spark.read.table("prod.sales.orders")
      .filter(col("amount") > 100)
      .withColumn("tax", col("amount") * 0.1))

# SQLから参照可能にする
df.createOrReplaceTempView("prepared_orders")
-- SQLで分析
SELECT customer_id, SUM(amount) FROM prepared_orders GROUP BY 1

制限事項

一時テーブルには以下の制限があります。

  • CREATE OR REPLACE TEMP TABLEは未対応(削除してから再作成が必要)
  • DELETE FROMは未対応(MERGE INTOで代替)
  • ALTER TABLEは未対応(スキーマ変更には再作成が必要)
  • タイムトラベル、クローン作成は未対応
  • ストリーミングクエリでは使用不可
  • DataFrame APIは未対応

まとめ

一時テーブルは「SQLファーストの探索的分析」や「SQLパイプラインの中間結果のマテリアライズ」に向いています。一方、DataFrameとの連携やコンピュートタイプの汎用性を重視するなら、従来の一時ビューが適切です。

はじめてのDatabricks

はじめてのDatabricks

Databricks無料トライアル

Databricks無料トライアル

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?