DuckDB CLIからの接続
DuckDB CLIを起動し、3ステップで「触る → 覗く → 分析する」を体験します。例として e-Stat 政府統計データセット(e_stat)を使い、都道府県別の指標を引き出してみます。
1. 接続する
DuckLake 拡張をロードし、e-Stat カタログをアタッチします。
INSTALL ducklake;
LOAD ducklake;
ATTACH 'ducklake:https://data.queria.io/e_stat/ducklake.duckdb' AS e_stat (READ_ONLY);
2. 中身を覗く
e_stat には人口・経済・労働などのドメイン別に都道府県/市区町村の統計が入っています。ssds スキーマのテーブル一覧を確認します。
SELECT schema, name FROM (SHOW ALL TABLES) WHERE database = 'e_stat' AND schema = 'ssds' LIMIT 20;
3. 都道府県ランキングを引き出す
2024年度の総人口で都道府県を並べてみます。item_name の値(例: A1101_総人口)は e-Stat の分類コードと指標名がアンダースコアで連結されています。
SELECT DISTINCT area_name, value AS population
FROM e_stat.ssds.a_pref_population
WHERE item_name = 'A1101_総人口'
AND year = 2024
AND area_name != '全国'
ORDER BY value DESC
LIMIT 10;
東京・神奈川・大阪が並ぶ見慣れたランキングが返ってきます。
計算指標で分析する
「労働力人口」と「完全失業者数」を CASE で横持ちにして、完全失業率を都道府県別に計算します。
SELECT
area_name,
MAX(CASE WHEN item_name = 'F1101_労働力人口' THEN value END) AS labor_force,
MAX(CASE WHEN item_name = 'F1107_完全失業者数' THEN value END) AS unemployed,
ROUND(
MAX(CASE WHEN item_name = 'F1107_完全失業者数' THEN value END)
/ MAX(CASE WHEN item_name = 'F1101_労働力人口' THEN value END) * 100,
2
) AS unemployment_rate_pct
FROM e_stat.ssds.f_pref_labor
WHERE year = 2020 AND area_name != '全国'
GROUP BY area_name
ORDER BY unemployment_rate_pct DESC NULLS LAST
LIMIT 10;
複数のデータセットを同時に接続する
ATTACH を複数回呼べば、他のデータセットと並列にクエリできます。
ATTACH 'ducklake:https://data.queria.io/reinfolib/ducklake.duckdb' AS reinfolib (READ_ONLY);
ATTACH 'ducklake:https://data.queria.io/zipcode/ducklake.duckdb' AS zipcode (READ_ONLY);
シェルから直接1行で実行する
-c オプションでスクリプト全体を渡せば、ターミナルから即席で結果を得られます。
duckdb -c "
INSTALL ducklake;
LOAD ducklake;
ATTACH 'ducklake:https://data.queria.io/e_stat/ducklake.duckdb' AS e_stat (READ_ONLY);
SELECT DISTINCT area_name, value AS population
FROM e_stat.ssds.a_pref_population
WHERE item_name = 'A1101_総人口' AND year = 2024 AND area_name != '全国'
ORDER BY value DESC LIMIT 5;
"