そのほか
2024/10/18
與田 龍人

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ファイルを使用しましたが、他の形式でも対応可能です。ぜひ、自分のプロジェクトでも試してみてください。

New call-to-action