ネットワーク、クラウドストレージ

ネットワーク、クラウドストレージ#

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
Truncated to displaylimit of 10.

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 │
└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘