質問: ### 前提・実現したいこと * 定期的に、カラム数が可変のCSVファイルをBigqueryに挿入したい * Bigquery側でスキーマを自動更新したい ### 発生している問題・エラーメッセージ * カラムが固定のCSVを挿入することはできています (構造体にマッピングしてそれをPutする) * 今回の場合、CSVのカラム数が可変のため、構造体をあらかじめ定義することができません ### 例 * 例えば、次のようなデータを同じテーブルに書き込みたい * カラム数は可変ですが、それを事前にはわからず構造体をあらかじめ定義できないという前提です ``` id,name,value1,value2 1,hoge,10,20 2,hoge,20,30 ``` ``` id,name,value1,value2,value3 1,fuga,100,200,300 2,fuga,200,300,400 ``` ### 試したこと 色々と調べてみましたが、構造体にマッピングする方法しか出てこず、途方にくれています。 ヒントだけでもよいので、ご教示いただけると幸いです。 よろしくお願いします。
回答: テーブルのカラム定義は固定して扱うのが一般的です。 また、ひとつのテーブルに入れるためにはカラム数の制限をなくすことは出来ません。(ほとんどのSQLデータベースはカラム数の上限が意外と少ない数で決められています) 「カラム数を片手の指で数えられる値に制限できる」ならNULL可能な最大カラム数でテーブル定義を確定させるのが一般的です。 もう一つのやり方は「id,name,values」という3カラムのテーブル定義にすることです。 この場合、valuesの値の格納方法や取り出し方はアプリ側の責任で行います。 最もおすすめの方法は、大きく変動するような可変数の値を格納しつつクエリも書きやすくするにはテーブル設計にて縦に並べ直した「values用のテーブル」を別途設けてそちらに可変個数のデータを入れ元のテーブルとリレーションを定義します。関係データベースにおける配列などのキーワードで調査してみてください。