Redshiftで簡単に特定のカラム以外をSELECTする方法

2023.11.13

データアナリティクス事業本部のueharaです。

今回は、Redshiftで簡単に特定のカラム以外をSELECTする方法をご紹介してみたいと思います。

はじめに

基本的には「抽出したいカラムをSELECT文で記載すれば良い」と言うのはその通りなのですが、例えばテーブルのカラム数が300個あり、その内の2カラムを除いて抽出したいケースだと、SELECT文に298カラム記載をする必要があります。

処理的にはシンプルなのですが、除きたいカラムの方が圧倒的に少ないのに抽出したいカラムの方を記載するのは大変ですし、SQLも長くなってしまうため可読性が低下するという問題があります。

例えばBigQueryだとテーブル table1 から col1, col2 というカラムを除いてSELECTしたい場合は以下のように記載することができますが、Redshiftにはこれに相当するSQLコマンドがありません

SELECT * EXCEPT (col1, col2)
FROM `table1`;

Redshiftでの対応

処理的にはひと手間入るですが、以下のように一時テーブルを作成し、そのテーブルから除きたいカラムを削除することで先のBigQueryのEXCEPTに相当する処理を表現することができます。

CREATE TEMP TABLE tmp_table1 as (
    SELECT *
    FROM table1
);

ALTER TABLE tmp_test DROP COLUMN col1;
ALTER TABLE tmp_test DROP COLUMN col2;

SELECT * FROM tmp_table1;

最後に

今回は、Redshiftで簡単に特定のカラム以外をSELECTする方法をご紹介してみました。

参考になりましたら幸いです。

参考文献