ClaudeCloudflare Developer Platform2026/04/20 0:00

R2 SQL - R2 SQL adds JSON functions, EXPLAIN FORMAT JSON, and unpartitioned table support

要点だけを先に読めるように短く再構成したセクションです。

元記事

Quick Digest

要約

要点だけを先に読めるように短く再構成したセクションです。

claudejamodel: claude-haiku-4-5

R2 SQL に JSON 関数、EXPLAIN FORMAT JSON、パーティション非対応テーブルサポートが追加

Key Points

  • JSON 関数でデータ抽出が可能
  • EXPLAIN FORMAT JSON で実行計画を JSON 出力
  • パーティション非対応テーブルに対応

Summary

Cloudflare の R2 SQL に 3 つの主要な機能が追加されました。Apache Iceberg テーブルに保存された JSON データをクエリするための JSON 関数、クエリ実行計画を構造化 JSON で取得できる EXPLAIN FORMAT JSON、およびパーティションキーなしのテーブルをサポートする機能です。

Key Points

  • JSON 関数: json_get_str()json_get_int()json_get_bool()json_contains() などの関数で SQL 内で直接 JSON データを抽出・操作可能
  • EXPLAIN FORMAT JSON: クエリ実行計画をプログラム的に解析できる JSON 形式で出力し、可観測性統合に対応
  • パーティション非対応テーブル: 小規模データセットや時間軸を持たないデータに対応。1000 ファイル以上の場合はパーティション推奨

Full Translation

翻訳

原文の流れを保ったまま読める翻訳セクションです。

claudejamodel: claude-haiku-4-5

R2 SQL が JSON 関数、EXPLAIN FORMAT JSON、およびパーティション分割されていないテーブルのサポートを追加

R2 SQL が JSON 関数、EXPLAIN FORMAT JSON、およびパーティション分割されていないテーブルのサポートを追加

2026年4月20日

R2 SQL は、R2 Data Catalog に保存されている Apache Iceberg テーブルをクエリするための Cloudflare のサーバーレス分散分析クエリエンジンです。

R2 SQL は、Apache Iceberg テーブルに保存されている JSON データをクエリするための関数、クエリプランを解析するための EXPLAIN FORMAT JSON、および R2 Data Catalog に保存されているパーティションキーのないテーブルをクエリする機能をサポートするようになりました。

JSON 関数

JSON 関数は、クライアント側の処理なしに SQL で直接 JSON 値を抽出および操作します:

SELECT json_get_str(doc, 'name') AS name,
       json_get_int(doc, 'user', 'profile', 'level') AS level,
       json_get_bool(doc, 'active') AS is_active
FROM my_namespace.sales_data
WHERE json_contains(doc, 'email')

利用可能な関数の完全なリストについては、JSON functions を参照してください。

EXPLAIN FORMAT JSON

EXPLAIN FORMAT JSON は、クエリ実行プランを構造化 JSON として返し、プログラム的な分析と可観測性の統合を実現します:

npx wrangler r2 sql query "${WAREHOUSE}" "EXPLAIN FORMAT JSON SELECT * FROM logpush.requests LIMIT 10;"
┌──────────────────────────────────────┐
│ plan                                 │
├──────────────────────────────────────┤
│ {                                    │
│   "name": "CoalescePartitionsExec", │
│   "output_partitions": 1,            │
│   "rows": 10,                        │
│   "size_approx": "310B",             │
│   "children": [                      │
│     {                                │
│       "name": "DataSourceExec",      │
│       "output_partitions": 4,        │
│       "rows": 28951,                 │
│       "size_approx": "900.0KB",      │
│       "table": "logpush.requests",   │
│       "files": 7,                    │
│       "bytes": 900019,               │
│       "projection": [                │
│         "__ingest_ts",               │
│         "CPUTimeMs",                 │
│         "DispatchNamespace",         │
│         "Entrypoint",                │
│         "Event",                     │
│         "EventTimestampMs",          │
│         "EventType",                 │
│         "Exceptions",                │
│         "Logs",                      │
│         "Outcome",                   │
│         "ScriptName",                │
│         "ScriptTags",                │
│         "ScriptVersion",             │
│         "WallTimeMs"                 │
│       ],                             │
│       "limit": 10                    │
│     }                                │
│   ]                                  │
│ }                                    │
└──────────────────────────────────────┘

詳細については、EXPLAIN を参照してください。

パーティション分割されていない Iceberg テーブル

パーティション分割されていない Iceberg テーブルは直接クエリできるようになりました。これは、小規模なデータセットや自然な時間次元を持たないデータに役立ちます。1000 ファイルを超えるテーブルの場合、パフォーマンスを向上させるためにパーティション分割が推奨されます。

R2 SQL の使用に関する最新のガイダンスについては、Limitations and best practices を参照してください。