ネットワーク、クラウドストレージ#
HTTP Parquet#
HTTP(S)経由でParquetファイルをロードするには、httpfs拡張をインストールする
INSTALL httpfs;
httpfs拡張をロードして使用するには、LOAD SQLコマンドを使用する
LOAD httpfs;
%%sql
SELECT
*
FROM
read_parquet("https://raw.githubusercontent.com/plotly/datasets/refs/heads/master/2015_flights.parquet")
;
Running query in 'duckdb:///:memory:'
| DEPARTURE_DELAY | ARRIVAL_DELAY | DISTANCE | SCHEDULED_DEPARTURE |
|---|---|---|---|
| -11.0 | -22.0 | 1448 | 0.08333333333333333 |
| -8.0 | -9.0 | 2330 | 0.16666666666666666 |
| -2.0 | 5.0 | 2296 | 0.3333333333333333 |
| -5.0 | -9.0 | 2342 | 0.3333333333333333 |
| -1.0 | -21.0 | 1448 | 0.4166666666666667 |
| -5.0 | 8.0 | 1589 | 0.4166666666666667 |
| -6.0 | -17.0 | 1299 | 0.4166666666666667 |
| 14.0 | -10.0 | 2125 | 0.5 |
| -11.0 | -13.0 | 1464 | 0.5 |
| 3.0 | -15.0 | 1747 | 0.5 |
Cloudflare R2#
S3 API互換のオブジェクトストレージ
DuckDBのS3サポートを使用してR2のバケットから読み書きできる
Credentialsの設定#
S3の認証トークンを生成し、DuckDBにR2シークレットを作成する
CREATE SECRET (
TYPE R2,
KEY_ID 'AKIAIOSFODNN7EXAMPLE',
SECRET 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
ACCOUNT_ID 'your-account-id-here' -- your 33 character hexadecimal account ID
);
クエリ#
r2://⟨r2_bucket_name⟩/⟨file⟩の形式で記述*やリストで複数ファイルをクエリできる
import duckdb
duckdb.sql("SELECT * FROM read_parquet('r2://hands-on/197*.parquet')")
┌──────────┬──────────────────────────┬────────────┬───────────────────────────────────────────┬───────────┬────────────────────┬────────────┬──────────────────┬─────────┬────────┬────────────┐
│ tab_code │ 表章項目 │ cat01_code │ 2020年基準品目 │ area_code │ 地域(2020年基準) │ time_code │ 時間軸(年・月) │ unit │ value │ annotation │
│ int64 │ varchar │ int64 │ varchar │ varchar │ varchar │ int64 │ varchar │ varchar │ double │ double │
├──────────┼──────────────────────────┼────────────┼───────────────────────────────────────────┼───────────┼────────────────────┼────────────┼──────────────────┼─────────┼────────┼────────────┤
│ 1 │ 指数 │ 1 │ 0001 総合 │ 13A01 │ 13100 東京都区部 │ 1970000303 │ 1970年3月 │ NULL │ 31.2 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00000 │ 全国 │ 1970000303 │ 1970年3月 │ NULL │ 30.6 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00012 │ 大都市 │ 1970000303 │ 1970年3月 │ NULL │ 30.8 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00013 │ 中都市 │ 1970000303 │ 1970年3月 │ NULL │ 30.9 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00018 │ 小都市A │ 1970000303 │ 1970年3月 │ NULL │ 30.3 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00042 │ 北海道地方 │ 1970000303 │ 1970年3月 │ NULL │ 32.0 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00043 │ 東北地方 │ 1970000303 │ 1970年3月 │ NULL │ 30.0 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00044 │ 関東地方 │ 1970000303 │ 1970年3月 │ NULL │ 30.7 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00049 │ 北陸地方 │ 1970000303 │ 1970年3月 │ NULL │ 30.5 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00050 │ 東海地方 │ 1970000303 │ 1970年3月 │ NULL │ 30.7 │ NULL │
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 02A01 │ 02201 青森市 │ 1970000303 │ 1970年3月 │ % │ 0.5 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 03A01 │ 03201 盛岡市 │ 1970000303 │ 1970年3月 │ % │ 0.3 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 04A01 │ 04100 仙台市 │ 1970000303 │ 1970年3月 │ % │ 0.4 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 05A01 │ 05201 秋田市 │ 1970000303 │ 1970年3月 │ % │ 0.0 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 06A01 │ 06201 山形市 │ 1970000303 │ 1970年3月 │ % │ 0.5 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 07A01 │ 07201 福島市 │ 1970000303 │ 1970年3月 │ % │ 0.4 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 08A01 │ 08201 水戸市 │ 1970000303 │ 1970年3月 │ % │ -0.1 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 09A01 │ 09201 宇都宮市 │ 1970000303 │ 1970年3月 │ % │ 0.2 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 10A01 │ 10201 前橋市 │ 1970000303 │ 1970年3月 │ % │ -0.1 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 166 │ 0166 持家の帰属家賃及び生鮮食品を除く総合 │ 11A01 │ 11100 さいたま市 │ 1970000303 │ 1970年3月 │ % │ 0.0 │ NULL │
├──────────┴──────────────────────────┴────────────┴───────────────────────────────────────────┴───────────┴────────────────────┴────────────┴──────────────────┴─────────┴────────┴────────────┤
│ ? rows (>9999 rows, 20 shown) 11 columns │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
duckdb.sql(
"SELECT * FROM read_parquet(['r2://hands-on/2021*.parquet', 'r2://hands-on/2022*.parquet'])"
)
┌──────────┬──────────────────────────┬────────────┬───────────────────────────────┬───────────┬────────────────────┬────────────┬──────────────────┬─────────┬────────┬────────────┐
│ tab_code │ 表章項目 │ cat01_code │ 2020年基準品目 │ area_code │ 地域(2020年基準) │ time_code │ 時間軸(年・月) │ unit │ value │ annotation │
│ int64 │ varchar │ int64 │ varchar │ varchar │ varchar │ int64 │ varchar │ varchar │ double │ double │
├──────────┼──────────────────────────┼────────────┼───────────────────────────────┼───────────┼────────────────────┼────────────┼──────────────────┼─────────┼────────┼────────────┤
│ 1 │ 指数 │ 1 │ 0001 総合 │ 13A01 │ 13100 東京都区部 │ 2021000909 │ 2021年9月 │ NULL │ 100.1 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00000 │ 全国 │ 2021000909 │ 2021年9月 │ NULL │ 100.1 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00012 │ 大都市 │ 2021000909 │ 2021年9月 │ NULL │ 100.0 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00013 │ 中都市 │ 2021000909 │ 2021年9月 │ NULL │ 100.0 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00018 │ 小都市A │ 2021000909 │ 2021年9月 │ NULL │ 100.2 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00021 │ 小都市B・町村 │ 2021000909 │ 2021年9月 │ NULL │ 100.3 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00042 │ 北海道地方 │ 2021000909 │ 2021年9月 │ NULL │ 100.3 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00043 │ 東北地方 │ 2021000909 │ 2021年9月 │ NULL │ 100.3 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00044 │ 関東地方 │ 2021000909 │ 2021年9月 │ NULL │ 100.1 │ NULL │
│ 1 │ 指数 │ 1 │ 0001 総合 │ 00049 │ 北陸地方 │ 2021000909 │ 2021年9月 │ NULL │ 100.0 │ NULL │
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
│ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │ · │
│ 2 │ 前月比・前年比・前年度比 │ 88 │ 0088 子供用洋服 │ 00000 │ 全国 │ 2021000909 │ 2021年9月 │ % │ 5.8 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 5195 │ 5195 子供用ズボン(春夏物) │ 13A01 │ 13100 東京都区部 │ 2021000909 │ 2021年9月 │ % │ 13.3 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 5195 │ 5195 子供用ズボン(春夏物) │ 00000 │ 全国 │ 2021000909 │ 2021年9月 │ % │ 14.3 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 5196 │ 5196 子供用ズボン(秋冬物) │ 13A01 │ 13100 東京都区部 │ 2021000909 │ 2021年9月 │ % │ 2.1 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 5196 │ 5196 子供用ズボン(秋冬物) │ 00000 │ 全国 │ 2021000909 │ 2021年9月 │ % │ 1.8 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 5193 │ 5193 乳児服 │ 13A01 │ 13100 東京都区部 │ 2021000909 │ 2021年9月 │ % │ 4.8 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 5193 │ 5193 乳児服 │ 00000 │ 全国 │ 2021000909 │ 2021年9月 │ % │ 0.8 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 89 │ 0089 シャツ・セーター・下着類 │ 13A01 │ 13100 東京都区部 │ 2021000909 │ 2021年9月 │ % │ 4.7 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 89 │ 0089 シャツ・セーター・下着類 │ 00000 │ 全国 │ 2021000909 │ 2021年9月 │ % │ 6.1 │ NULL │
│ 2 │ 前月比・前年比・前年度比 │ 89 │ 0089 シャツ・セーター・下着類 │ 00012 │ 大都市 │ 2021000909 │ 2021年9月 │ % │ 5.6 │ NULL │
├──────────┴──────────────────────────┴────────────┴───────────────────────────────┴───────────┴────────────────────┴────────────┴──────────────────┴─────────┴────────┴────────────┤
│ ? rows (>9999 rows, 20 shown) 11 columns │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘