dbt seedを使ってSnowflakeへローカルデータをロードしてみよう

データ分析基盤としてSnowflakeを使用している場合、dbt(Data Build Tool)を使うことでデータパイプラインの構築がより簡単になります。この記事では、dbt seedコマンドを利用してローカルのCSVファイルをSnowflakeにロードする方法を解説します。
目次
はじめに
データ分析基盤としてSnowflakeを使用している場合、dbt(Data Build Tool)を使うことでデータパイプラインの構築がより簡単になります。この記事では、dbt seedコマンドを利用してローカルのCSVファイルをSnowflakeにロードする方法を解説します。
前提条件
1.Snowflakeアカウント(アカウント、ユーザー、パスワード、データベース、スキーマ)
2.dbtのインストール(pip install dbt-snowflake
でインストール可能)
3.プロジェクト設定済みのdbtプロジェクト
ステップ 1: dbtのプロジェクト設定
まずは、dbtプロジェクトを設定します。すでにプロジェクトがある場合は、このステップは不要です。
# 新しいdbtプロジェクトを作成する
dbt init my_dbt_project
cd my_dbt_project
profiles.ymlファイルにSnowflake接続情報を設定します。~/.dbt/profiles.ymlファイルに以下のような内容を追加します:
my_dbt_project:
target: dev
outputs:
dev:
type: snowflake
account: <your_snowflake_account>
user: <your_snowflake_user>
password: <your_password>
role: <your_snowflake_role>
database: <your_snowflake_database>
warehouse: <your_snowflake_warehouse>
schema: <your_snowflake_schema>
threads: 1
Snowflakeのアカウント、ユーザー、パスワード、データベースなどを指定してください。
dbt debugで接続を確認できます。
dbt debug
ステップ 2: CSVデータを準備する
dbt seedを使ってロードするためには、CSVファイルをseedディレクトリ内に配置する必要があります。例えば、seed/customers.csvというファイルを作成します:
id,name,email
1,John Doe,john@example.com
2,Jane Smith,jane@example.com
3,Bob Johnson,bob@example.com
ステップ 3: dbt seedを実行する
準備が整ったら、以下のコマンドでCSVデータをSnowflakeにロードします:
dbt seed
実行後、dbt
は指定したSnowflakeのスキーマ内にcustomers
というテーブルを作成し、CSVデータをロードします。
ロードの成功画面
ステップ 4: ロード結果を確認する
Snowflakeにログインして、データが正しくロードされたか確認します。
SELECT * FROM <your_snowflake_schema>.customers;
結果として、customersテーブルにCSVファイルの内容が格納されているはずです。
ステップ 5: モデルでの利用
dbtでseed
されたデータはそのままdbtモデル内で使用できます。例えば、models/customers.sql
というファイルを作成して、データをフィルタリングする簡単なモデルを作成します。
WITH filtered_customers AS (
SELECT *
FROM {{ ref('customers') }}
WHERE name LIKE 'John%'
)
SELECT * FROM filtered_customers;
これで、Johnという名前で始まる顧客のみを抽出するSQLが実行されます。
終わりに
dbt seedは、ローカルファイルを簡単にSnowflakeにインポートできる便利な機能です。今回の記事では、CSVファイルを使用しましたが、他の形式でも対応可能です。ぜひ、自分のプロジェクトでも試してみてください。