10
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?

BigQueryのデータ型変更が面倒くさかった

Last updated at Posted at 2024-09-13

はじめに

こんにちは、京セラコミュニケーションシステム 川村(@kccs_takahiro-kawamura)です。
みなさんはBigQueryを利用していますか?
私はIoTデータを収集するプラットフォームを構築しているのですが、データの保管場所としてBigQueryを採用することが多いです。
今回は、私がBigQueryを運用している経験から面倒に思ったBigQueryのデータ型の変更について、その手順と注意点を記載いたします。

本記事は2024年8月ごろに作成しております。よって、引用している文章などはこの時点での最新となります。ご了承ください。

本記事の対象者

  • BigQueryを利用している方

データ型の変更について

残念ながら、データ型の変更はGoogle Cloudコンソールからスキーマの編集操作で行うことができません。
また、データ型には互換性があるものとないものがあり、その有無で手順が異なります。

互換性のあるデータ型変更

互換性がある場合は簡単です。ALTER文を実行するだけで変更できます。

ALTER TABLE [IF EXISTS] table_name
ALTER COLUMN [IF EXISTS] column_name SET DATA TYPE column_schema

互換性があるデータ型の変更は以下のとおりです。

  • INT64から、NUMERIC/BIGNUMERIC/FLOAT64への変更
  • NUMERICから、BIGNUMERIC/FLOAT64への変更

より詳細な情報は公式ドキュメントをご確認ください。

互換性がないデータ型変更

互換性がない場合はテーブルを再作成する必要があります。
すでに利用中のテーブルの場合、データが蓄積していますのでコピーを作成し、再作成したテーブルにリストアする必要があります。
リストアする際に、データ型を変更したカラムはCASTする必要があります。
まとめると、互換性がないデータ型の変更手順は以下のとおりです。

  1. テーブルのコピーを作成する

  2. オリジナルのテーブルを削除する

  3. データ型を変更してテーブルを再作成する

  4. クエリ設定を行う
    query_setting.png

  5. クエリを実行する

SELECT column1, CAST(column2 AS STRING) as column2, column3 FROM example_table_copy [WHERE パーティションの条件]

まとめ

  • 互換性があるデータ型変更は、ALTER文を実行することで変更できる
  • 互換性がないデータ型変更は、テーブルの再作成が必要になる

次回の記事もお楽しみに!

おしらせ

弊社X(旧:Twitter)では、Qiita投稿に関する情報や各種セミナー情報をお届けしております。情報収集や学びの場を求める皆さん!ぜひフォローしていただき、最新情報を手に入れてください😄

10
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
10
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?