---
title: 【Snowflake × Terraform】Terraformで作成したSnowflakeテーブルのカラム名更新
description: "Terraformで作成したSnowflakeテーブルの更新について検証しました。\nTerraformでテーブルのカラム名を更新する際は注意です。\n※Snowflake providerバージョン0.63使用"
image: https://knowledge.insight-lab.co.jp/hubfs/Terraform_VerticalLogo_Color_RGB.png
---

![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png)

![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png)

[![お問い合わせ](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/c64a7bb0-e32a-499b-851b-b4e7a66da275.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/c64a7bb0-e32a-499b-851b-b4e7a66da275)

<https://knowledge.insight-lab.co.jp/snowflake/-snowflake-terraform-terraform%E3%81%A7%E4%BD%9C%E6%88%90%E3%81%97%E3%81%9Fsnowflake%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E6%A4%9C%E8%A8%BC%E3%82%AB%E3%83%A9%E3%83%A0%E5%90%8D%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E3%81%A8-#tmpmodule_159357067471898>

- [Snowflakeとは](https://service.insight-lab.co.jp/snowflake)
- [SNOWFLAKEナレッジ](https://knowledge.insight-lab.co.jp/snowflake)
- [お役立ち資料](https://download.insight-lab.co.jp/snowflake/download)

###### 4 分で読むことができます

# [【Snowflake × Terraform】Terraformで作成したSnowflakeテーブルのカラム名更新](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-terraform-terraformで作成したsnowflakeテーブル検証カラム名を更新すると-)

 執筆者 [neco](https://knowledge.insight-lab.co.jp/snowflake/author/neco) 更新日時 2023年5月16日

![【Snowflake × Terraform】Terraformで作成したSnowflakeテーブルのカラム名更新](https://knowledge.insight-lab.co.jp/hubfs/Terraform_VerticalLogo_Color_RGB.png)

 目次

## 記事の要点

- Terraformで作成したSnowflake上のテーブルの更新について検証しました。
- Terraformでテーブルのカラム名を更新したところ、元のカラムはデータごと削除、新しいカラムが空データの状態で追加されました。
- TerraformでSnowflake上にテーブルを構築する際は動作にご注意を!
- 使用したSnowflakeのproviderは0.63.0です。

## はじめに

### Terraformとは

- HashiCorp社によるオープンソースのinfrastructure-as-code（IaC）ソフトウエアツールです。
- AWS、Azure、GCPなどのインフラのリソースをコードで構築・管理できます。
- Snowflakeにおいても、データベース、ウェアハウス、スキーマ、テーブル、タスク、ロールなどのオブジェクトを構築・管理できます。
- gitによるバージョン管理が可能です。
- IaCのメリットである自動化やコードの再利用をSnowflakeオブジェクト管理において実現できます。
- 参考リンク： 
    - [Terraformドキュメント](https://developer.hashicorp.com/terraform)
    - [Snowflake providerドキュメント](https://registry.terraform.io/providers/Snowflake-Labs/snowflake/latest/docs)
    - [SnowflakeのTerraform チュートリアル](https://quickstarts.snowflake.com/guide/terraforming_snowflake/index.html?index=..%2F..index#0)<https://developer.hashicorp.com/terraform>

### Snowflake×Terraformコード例

※本記事では、Terraformの導入方法やコードの詳細な説明は行いません。

データベースを構築する場合のコード例は以下のようになります。

 

- プロバイダーの指定と設定、リソースを記述したコードを拡張子.tfのファイルに保存することで実行可能なファイルを作成できます。
- .tfファイル実行後、コードを更新して再度実行することで、オブジェクトの更新（新規作成、変更、削除）を行うことができます。
- 「terraform destroy」コマンドを使用することで構築したオブジェクトをまとめて削除することができます。

### SnowflakeでTerraformをどう活用するか

TerraformでSnowflakeオブジェクトを構築・管理することにしたとしても、すべてのオブジェクトをTerraformで構築・管理する必要はありません。例えば、データベース、スキーマ、ロールはTerraform、その他のオブジェクトは別のツールを適用する、ということも可能です。オブジェクトの性質とTerraformの性能を考慮して、構築・管理方法を設計することが大切です。

それでは、「テーブル」はTerraformで管理すべきでしょうか？おそらく多くの人は、テーブルは個別に変更されることが多いオブジェクトなのでTerraformで一括管理するというのは適さない、と考えるのではないでしょうか。

そこで、本記事ではTerraformによりSnowflake上のテーブル構築と更新について検証しました。

 

## 検証：テーブル構築と更新

### テーブル構築

※Snowflakeプロバイダーのバージョンは0.63.0

以下のコードが記述された.tfファイルを実行しました。

実行後、図1と同じカラムを持つテーブルがSnowflake上に作成されました。今回はSnowflake上でCOPYコマンドにより図1のとおりデータをロードしました。

| ID | NAME | AGE |
| --- | --- | --- |
| 0 | 太郎 | 10 |
| 1 | 花子 | 20 |

図1、新規に構築したテーブル

### 更新①：カラム名変更

図1のテーブルに対して、下記のとおりにコードを更新してカラム名変更を実行しました。

実行後、Snowflake上のテーブルは図2のとおり更新されました。

| ID | AGE | NUM |
| --- | --- | --- |
| 0 | 10 |  |
| 1 | 20 |  |

図2、カラム名変更後のテーブル

すなわち、カラム「NAME」がデータごと削除され、カラム「NUM」が追加されました。

### 更新②：カラム追加

図2のテーブルに対して、下記のとおりにコードを更新してカラム「NUM2」の追加を実行しました。

実行後、Snowflake上のテーブルは図3のとおり更新されました。

| ID | AGE | NUM | NUM2 |
| --- | --- | --- | --- |
| 0 | 10 |  |  |
| 1 | 20 |  |  |

図3、カラム追加後のテーブル

すなわち、カラム「NUM2」が追加されました。

注目すべきは、コード記述の順番によらず右端の列に追加されたことです。更新後のカラム並び順の制御は容易ではなさそうです。

### 更新③：データ型変更

図3のテーブルに対して、下記のとおりにコードを更新してカラム「AGE」のデータ型変更を実行しました。

実行後、カラム「AGE」のデータ型はNUMBER(9,0)に変更されました。Snowflake上のテーブル内データは図3から変更はなく、データ型変更ではテーブル内データに影響はありませんでした。

### 検証結果まとめ

Terraformでテーブルのカラム名を更新したところ、元のカラムはデータごと削除、新しいカラムが空データの状態で追加されました。

本結果を踏まえると、TerraformによるSnowflakeテーブルの更新管理は注意が必要と考えられます。

 

### 参考：カラム更新でファイル「terraform.tfstate」はどうなるか

.tfファイル実行で構築したオブジェクトの状態は、JSONファイルとしてファイル「terraform.tfstate」に保存されます。

上記の検証後にterraform.tfstateファイルに保存されたresource（カラム部分のみ抜粋）は以下のようになります。

カラムの情報はコード通りの順番で格納されるようです（Snowflakeのテーブル上での順番とは異なるので注意）。

 

## 最後に

Terraformは、自動化とコードの再利用を可能にするツールです。今回の「テーブル」のようにTerraformでの扱いが容易ではないオブジェクトもありますが、Terraformの性能とオブジェクトの性質の相性がよい場合には、Terraform導入によりオブジェクト構築・管理作業の負担が軽減することが期待されます。本記事の著者としては、Terraformの性能とオブジェクトの性質を踏まえた上で、Terraform導入を積極的に検討することがSnowflake環境構築の効率化につながると考えます。

 

Snowflakeを体験してみませんか？

INSIGHT LABではSnowflake紹介セミナーを定期開催しています。Snowflakeの製品紹介だけでなく、デモンストレーションを通してSnowflakeのシンプルなUI操作や処理パフォーマンスの高さを体感いただけます。

[![詳細はこちら](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/0d0b0d86-fdb7-4351-ab14-d482c854defc.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/0d0b0d86-fdb7-4351-ab14-d482c854defc)

- [Tweet](https://twitter.com/share)

![neco](https://app.hubspot.com/settings/avatar/d41d8cd98f00b204e9800998ecf8427e)

#### 執筆者 [neco](https://knowledge.insight-lab.co.jp/snowflake/author/neco)

###### [前の投稿](https://knowledge.insight-lab.co.jp/snowflake/-sql-group-by-operation-check)

[![【SQL】Snowflakeを使ってgroup byの挙動確認](https://knowledge.insight-lab.co.jp/hubfs/Snowflake/Shiratori/%E3%80%90SQL%E3%80%91Group%20By%E3%81%AE%E6%8C%99%E5%8B%95%E7%A2%BA%E8%AA%8D/%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97.png)](https://knowledge.insight-lab.co.jp/snowflake/-sql-group-by-operation-check)

###### [【SQL】Snowflakeを使ってgroup byの挙動確認](https://knowledge.insight-lab.co.jp/snowflake/-sql-group-by-operation-check)

###### [次の投稿](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-schemadetecion_and_schemaevolution)

[![【Snowflake】SchemaDetecionとSchemaEvolutionを使用した継続的データパイプラインの検証](https://knowledge.insight-lab.co.jp/hubfs/01-2.png)](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-schemadetecion_and_schemaevolution)

###### [【Snowflake】SchemaDetecionとSchemaEvolutionを使用した継続的データパイプラインの検証](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-schemadetecion_and_schemaevolution)

RECOMMEND こちらの記事も人気です。

<https://knowledge.insight-lab.co.jp/snowflake/pricing>

###### 4 分で読むことができます。

##### [Snowflakeの料金体系｜クレジットと費用最適化のポイントをご紹介](https://knowledge.insight-lab.co.jp/snowflake/pricing)

###### 2021年 6月 28日

<https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline>

###### 12 分で読むことができます。

##### [【Snowflake×dbt】データパイプライン構築](https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline)

###### 2022年 6月 17日

<https://knowledge.insight-lab.co.jp/snowflake/snowsight-executive-dashboard>

###### 1 分で読むことができます。

##### [Snowsightでどこまでできるか！？限界に挑戦！](https://knowledge.insight-lab.co.jp/snowflake/snowsight-executive-dashboard)

###### 2023年 12月 14日

<https://knowledge.insight-lab.co.jp/snowflake/snowflake-vs-treasuredata>

###### 5 分で読むことができます。

##### [【禁断の比較？】SnowflakeとTreasure Dataを比べてみました](https://knowledge.insight-lab.co.jp/snowflake/snowflake-vs-treasuredata)

###### 2021年 5月 24日

<https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce>

###### 5 分で読むことができます。

##### [【Snowflake】新機能「Streamlit in Snowflake」とは何者か！？](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce)

###### 2023年 9月 21日

<https://knowledge.insight-lab.co.jp/snowflake/function-get-ddl>

###### 2 分で読むことができます。

##### [【Snowflake】get\_ddl関数でオブジェクトの定義を取得して再利用する](https://knowledge.insight-lab.co.jp/snowflake/function-get-ddl)

###### 2020年 7月 28日

##### 運営会社

運営会社

- [会社概要](https://insight-lab.co.jp/about/)
- [お問い合わせ](https://contact.insight-lab.co.jp/main)

##### メニュー

メニュー

- [Snowflakeとは](https://service.insight-lab.co.jp/snowflake)
- [Snowflakeナレッジ](https://knowledge.insight-lab.co.jp/snowflake)
- [お役立ち資料](https://download.insight-lab.co.jp/snowflake/download)

[![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=200&height=55&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png "INSIGHT LAB")](https://www.insight-lab.co.jp/)

- [プライバシーポリシー](https://www.insight-lab.co.jp/privacy.html)

Copyright © 2020 INSIGHT LAB, Inc.

<https://twitter.com/INSIGHTLAB_INC><https://www.youtube.com/channel/UCOKNKiO4uuza4NioSZpBMhg>