2017-05-24 17 views
0

約400のパーティションを持つ日付パーティション表があります。 残念ながら、列データ型の1つが変更され、INTからSTRに変更する必要があります。日付パーティション表のデータ型を変更してください

私は次のようにデータ型を変更することができます。

SELECT 
    CAST(change_var AS STRING) change_var 
    <rest of columns> 
FROM dataset.table_name 

をして、テーブルを上書きしますが、日付の分割が失われます。

パーティショニングを維持して列のデータ型を変更する方法はありますか?

答えて

0

オプション1 パーティションごとにテーブルをエクスポートします。私はそれを達成するための簡単なライブラリを作成しました。 https://github.com/rdtr/bq-partition-porter 次に、正しいタイプの新しいテーブルを作成し、パーティションごとに新しいテーブルにデータを再度ロードします。クォータ(1日あたり1000輸出)に注意してください。 400は大丈夫です。

オプション2. Cloud Dataflowを使用すると、テーブル全体をエクスポートし、DynamicDestinationを使用してパーティションごとにBQにデータをインポートできます。パーティションの数が多すぎる場合は、これで十分です。

bq loadコマンドでパーティションキーフィールド名を指定する方法があると思います(既にbq load helpに記載されています)。それまでは、これらのオプションのいずれかを実行する必要があります。

関連する問題