BigQuery PR

「293個もカラム名書くの?」「厳しいって!」の時に使えるexcept文【BigQuery】

「293個もカラム名書くの?」「厳しいって!」の時に使えるexcept文【BigQuery】
記事内に商品プロモーションを含む場合があります

300ほどのカラムを持つ、とあるテーブルをselectしてくる時のお話。

「特定のカラムは表示させたくないんだよな〜」なんてことがありました。(実際は7個ほどだった気がする)

まさか残りの293個のカラム名を書くのか…

きびしいって!!

except文

そんな時に使えるのがexcept文

公式ドキュメントには次のように書かれています。

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 つ以上の列の名前を指定します。一致するすべての列名は出力から省略されます。

Query syntax  |  BigQuery  |  Google Cloud

挙動の確認

下記のクエリでテーブルを作成して、データを追加します。

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( ̄  ̄)

僕がDBやSQLを学ぶ際に使ったおすすめの教材

動画

【22日間で学ぶ】SQL文、分析関数、テーブル設計、SQLチューニングまでMySQLで覚えるSQL実践講座

書籍