OpenAICloudflare Developer Platform2026/04/20 0:00

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

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

元記事

Quick Digest

要約

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

openaijamodel: gpt-5-mini-2025-08-07

R2 SQL:JSON関数、EXPLAIN FORMAT JSON、非パーティションテーブル対応

Key Points

  • JSON関数追加
  • 実行計画をJSONで出力
  • 非パーティションテーブル対応

Summary

R2 SQL に以下の機能が追加されました:Apache Iceberg テーブル内の JSON データを直接操作する関数、実行計画を構造化 JSON で返す EXPLAIN FORMAT JSON、およびパーティションキーのない(非パーティション)テーブルのクエリ対応。エンジニア向けに実運用で使えるポイントと注意点をまとめます。

Key Points

  • JSON 関数でクライアント側でのパース不要に
    • 例: json_get_str(doc, 'name'), json_get_int(doc, 'user','profile','level'), json_contains(doc, 'email')
    • 生データ列(JSON 型)から直接抽出・型変換できるため、ETL を簡素化可能。
  • EXPLAIN FORMAT JSON で実行計画をプログラム解析可能
    • 実行例: npx wrangler r2 sql query "${WAREHOUSE}" "EXPLAIN FORMAT JSON SELECT * FROM logpush.requests LIMIT 10;"
    • 出力は構造化 JSON(ノード、行数、ファイル数など)なので自動監視や最適化ツールに組み込みやすい。
  • 非パーティションテーブルのサポート
    • 小規模データまたは時間軸がないデータに有用で、直接クエリ可能に。
    • 注意: ファイル数が 1000 を超える場合はパーティションを検討してパフォーマンスを確保。
  • 運用上の注意点
    • 大規模テーブルや多数ファイルのテーブルではパーティション/スキーマ設計と EXPLAIN の確認を推奨。

参照: JSON 関数一覧、EXPLAIN、Limitations and best practices(公式ドキュメント参照)

Full Translation

翻訳

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

openaijamodel: gpt-5-mini-2025-08-07

R2 SQL — JSON関数、EXPLAIN FORMAT JSON、非パーティション化テーブルのサポートを追加

R2 SQL が JSON 関数、EXPLAIN FORMAT JSON、非パーティション化テーブルをサポート

R2 SQL は Cloudflare のサーバーレスで分散型の解析クエリエンジンで、R2 Data Catalog に保存された Apache Iceberg ↗ テーブルのクエリを実行します。今回、R2 SQL は以下をサポートします:

  • Apache Iceberg テーブル内に格納された JSON データを SQL 内で直接抽出・操作する JSON 関数
  • クエリ実行計画を構造化された 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 として返すため、プログラム的な解析や可観測性(observability)統合に利用できます。例: CLI での実行例:

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 を超えるテーブルでは、性能向上のためにパーティションを推奨します。

最新のガイダンスは Limitations and best practices を参照してください。

参考

  • JSON functions
  • EXPLAIN
  • R2 Data Catalog
  • Limitations and best practices