1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【CloudShell】DuckDB を使って S3 上のデータをサクッと取得してみた

Last updated at Posted at 2025-11-29

はじめに

以前、S3上のデータを取得するためにDuckDBを利用する記事を書きました。

しかし、そちらでは Cloud9 を使っており、今から試そうと思うとなかなか難しいです。(Cloud9 帰ってきてくれ…!)

ということで、比較的サクッと使える CloudShell を使って同じことを試してみたいと思います。

DuckDBとは

DuckDBは、組み込み型のOLAP(分析向け)データベース管理システムです。OSSとして公開されており、以下のような特徴があります。

  • 多様なファイル形式に対応:CSV、JSON、Parquet、Excelなど、様々なフォーマットをインポート・エクスポート可能
  • 豊富なAPIサポート:Python(Pandas連携も可能)をはじめ、多様な言語から利用可能
  • 軽量・高速:ローカル環境でサクッと分析できる

詳細は以下をご覧ください。

CloudShell とは

端的に言いますと、ブラウザから直接使えるコマンドライン環境です。

今回詳細は省きますが、こちらの記事を参照していただければイメージがつかめると思います。

CloudShellでDuckDBを使ってみる

それでは、実際にCloudShell上でDuckDBをセットアップし、S3上のデータを分析してみましょう。

Step 0:データの準備

雑に Claude にテストデータを作ってもらい、それらを S3 に置きました。

image.png

image.png

Step 1:DuckDBのインストール

CloudShellで以下のコマンドを実行します。

curl https://install.duckdb.org | sh

image.png

これだけでDuckDBが使えるようになります(ダックかわいい)。インストール方法の詳細は以下の Installation ページをご確認ください。

以下コマンドで実行することができます。

duckdb

image.png

Step 2:httpfs拡張のインストールと認証設定

S3にアクセスするために、httpfs拡張をインストールし、クレデンシャルを設定します。

-- httpfs拡張のインストールと読み込み
INSTALL httpfs;
LOAD httpfs;

-- クレデンシャルの設定
CREATE SECRET (
    TYPE s3,
    PROVIDER credential_chain
);

image.png

これらのコマンドの詳細は以下のページを参照してください。

Step 3:テーブルの作成

S3上のファイルからテーブルを作成してみます。

CREATE TABLE users AS SELECT * FROM read_csv('s3://duckdb-demo-20251128/*.csv');

Step 4:クエリの実行

あとは通常のSQLでクエリを実行できます。

SELECT * FROM users;

image.png

SELECT * FROM users ORDER BY salary DESC, age DESC;

image.png

きちんと値を取得できていることが分かります。

(おまけ)直接S3の情報を探索

先ほどはいったんテーブルを作成してデータを覗いていましたが、直接見ることもできます。

SELECT * FROM read_csv('s3://duckdb-demo-20251128/data1.csv') limit 3;
SELECT * FROM read_csv('s3://duckdb-demo-20251128/*.csv');

image.png

うまくいかないときは

S3へのアクセスがうまくいかない場合は、一度ローカルにファイルをコピーしてから処理する方法もあります。

aws s3 cp s3://duckdb-demo-20251128/data1.csv data

image.png

read_csv に渡すパスを変えるだけで、基本的には同じ要領でデータを扱うことができます。

SELECT * FROM read_csv('data/*.csv');

image.png

また、認証周りについて知りたい方は、以下の記事がとても参考になります。

まとめ

DuckDBは軽量で様々なデータ形式に対応しており、ちょっとしたデータ分析に最適なツールです。

  • コストを気にせず何度でもクエリを試せる
  • 環境構築も簡単
  • S3のデータに直接アクセスして分析可能
  • 状況によってはローカルにまるっとデータを落として、そこから分析する使い方もあり

今回触れませんでしたが、大規模データの定期的な分析など Athena が適している場合もありますので、ユースケースに応じて適切にツールを使い分けていくことが大切だと思います。
ありがとうございました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?