300ほどのカラムを持つ、とあるテーブルをselectしてくる時のお話。
「特定のカラムは表示させたくないんだよな〜」なんてことがありました。(実際は7個ほどだった気がする)
まさか残りの293個のカラム名を書くのか…
きびしいって!!
except文
そんな時に使えるのがexcept文
公式ドキュメントには次のように書かれています。
A
SELECT * EXCEPT
statement specifies the names of one or more columns to exclude from the result. All matching column names are omitted from the output.SELECT * EXCEPT ステートメントは、結果から除外する 1 つ以上の列の名前を指定します。一致するすべての列名は出力から省略されます。
挙動の確認
下記のクエリでテーブルを作成して、データを追加します。
CREATE TABLE my_dataset.my_table (
col1 INT64,
col2 STRING,
col3 FLOAT64,
col4 BOOL,
col5 DATE
);
INSERT INTO my_dataset.my_table (col1, col2, col3, col4, col5)
VALUES
(1, 'Record1', 1.1, TRUE, '2024-01-01'),
(2, 'Record2', 2.2, FALSE, '2024-02-02'),
(3, 'Record3', 3.3, TRUE, '2024-03-03'),
(4, 'Record4', 4.4, FALSE, '2024-04-04'),
(5, 'Record5', 5.5, TRUE, '2024-05-05');
下記のクエリを実行してみます。
SELECT * except(col1)
FROM my_dataset.my_table
期待通り、col1以外のカラムのデータを取得することができました。
exceptで複数のカラムを指定してみます。次のクエリを実行してみます。
SELECT * except(col2, col4)
FROM my_dataset.my_table
期待通り、col2,col4以外のカラムのデータを取得することができました。
終わりに
これで厳しくないね!d( ̄  ̄)
参考記事