BigQueryにcsvファイルなどのデータをロードする際に、カラム名のユニコード対応が未だにされていないことで、もしカラム名が日本語の場合はヘッダーを英数字に変換する必要が出てくる。
少量のカラムであれば、手で変換して行けば良いかもしれませんが、大量のカラムがある場合にはかなり手間がかかる作業になります
このようなシーンで活躍しそうな、日本語カラムのcsvファイルを自動的に英字カラムに変換してデータをロードさせるツールを作ってみました。
ツールの使用感
csvファイルを読み込ませると、text列に元のカラム名、そしてtranslated textに変換された英字を出します。
以下は、国土交通省の台風位置データを読み込ませた画面の例です。
見ての通り、一部で変換出来ない文字があることがわかります。この画面上で編集することが出来ます。
また、type列でインポート先のデータ型をここで決めることも出来るようにしています。最初は全てstring型に固定させてます。string型から適切な型を選ぶと良いです。
(まだ、bq load --autodetectのような、データ型の自動推定まではやれていません。)
数字から始まっている文字もBigQueryのカラム名に使えないため編集します。
この例ではtypeもデータに合わせて、integer, floatに変えてしまってます。
最後に、Create Tableボタンを押すと、BigQueryにテーブルを作ってデータをインポートさせます。
以下はデータが入ったBigQueryのテーブル情報とプレビューです。
画面で指定した通りのフィールド名とデータ型でスキーマが定義されています。
英字のみで分からなくならないように、元のカラム名はディスクリプションに入れています。
指定したデータ型ですべのデータがインポート出来ています。
今回のサンプルデータとして、以下を使用しています。
ファイルのエンコードにutf-8対応させていません。
国土交通省の元のファイルはsjisだったため、文字化けしてしまいます。
nkfなどを使って、utf-8に変換する必要があります。
何を使って実装しているか
次回の投稿で、内部の実装を簡単に説明したいと思ってます。
https://qiita.com/yasudakn/items/864320b55cbcd1cf7558