できます
ALTER TABLE table_name ADD COLUMNS (user_id BIGINT)
非パーティション列の最後で、パーティション列の前に新しい列を追加します。
非パーティション列のどこかに新しい列を追加する方法はありますか?たとえば、この新しい列user_idをテーブルの最初の列として配置したいと思います。
はい、列の場所を変更することは可能ですが、CHANGE COLUMNを使用してテーブルに追加した後でのみ可能です。
あなたの場合、最初に以下のコマンドで列user_idをテーブルに追加します。
ALTER TABLE table_name ADD COLUMNS (user_id BIGINT);
ここで、user_id列をテーブルの最初の列として使用するには、change column with [〜#〜] first [〜#〜]句を使用します。
ALTER TABLE table_name CHANGE COLUMN user_id user_id BIGINT first;
これにより、user_id列が最初の位置に移動します。
同様に、指定した列を他の列の後に移動する場合は、firstの代わりにAfterを使用できます。たとえば、user_id列の後にdob列を移動したいと思います。次に、私のコマンドは次のようになります。
ALTER TABLE table_name CHANGE COLUMN dob dob date AFTER user_id;
このコマンドはメタデータのみを変更することに注意してください。列を移動する場合、データはすでに新しいスキーマと一致している必要があります。または、他の方法で一致するように変更する必要があります。
ああ、user_idを2回リストした理由の説明は次のとおりです(タイプではありません):
// Next change column a1's name to a2, its data type to string, and put it after column b.
ALTER TABLE test_change CHANGE a1 a2 STRING AFTER b;
// The new table's structure is: b int, a2 string, c int.