OpenAICloudflare Developer Platform2026/03/23 0:00

R2 SQL - R2 SQL now supports over 190 new functions, expressions, and complex types

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

元記事

Quick Digest

要約

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

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

R2 SQL が190以上の関数・式・複合型をサポート

Key Points

  • CASE式対応
  • 163のスカラー関数追加
  • 構造体・配列・マップアクセス

Summary

R2 SQL の拡張により、エクスポート不要で高度な分析クエリが実行できます。本リリースではCASE式、カラムエイリアス、算術式を含む完全な式サポート、163のスカラー関数、33の集計関数、CTE、EXPLAIN、構造体/配列/マップの完全アクセスなどが追加されました。エンジニアは既存のクエリをそのまま拡張し、より複雑な集計や型操作をクエリ内で完結できます。

Key Points

  • 新しい構文・機能
    • CASE 式(searched/ simple 両対応)
    • カラムエイリアス(SELECT col AS alias がすべての句で利用可能)
    • 算術式と完全な式サポート(SELECT/WHERE/GROUP BY/HAVING/ORDER BY
  • 関数と集計
    • スカラー関数: 163 関数(数学・文字列・日時・正規表現・暗号・エンコード・型検査など)
    • 集計関数: 33(分散・標準偏差・相関・回帰・ビット演算・位置集合など)
    • 近似関数も継続(例: approx_percentile_cont
  • 複合型サポート
    • 構造体/配列/マップに対するブラケットアクセス(例: pricing['price']
    • 46 の配列関数やマップのキー/値抽出をサポート
  • クエリ構造
    • CTE(WITH ... AS)をサポートしチェイン可能。ただし全てのCTEは同一の単一テーブルを参照する必要あり(重要)
    • EXPLAIN による実行計画確認が可能
  • キャストと抽出
    • CAST / TRY_CAST:: ショートハンドをサポート
    • EXTRACT が各句で使用可能

Practical notes

  • 既存クエリの拡張は最小限の修正で可能。集計内での条件分岐は CASE を使うと単一クエリで完結します。
  • 複合型アクセスや配列関数を利用する際は NULL/空配列の取扱いに注意してください。
  • パフォーマンスや制約の詳細は公式のSQLリファレンスとベストプラクティスを参照してください。

Full Translation

翻訳

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

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

R2 SQL — 190以上の新しい関数、式、および複合型をサポート

R2 SQL — 190以上の新しい関数、式、複合型をサポート

公開日: 2026-03-23

R2 SQL は拡張された SQL 文法をサポートするようになり、データをエクスポートせずによりリッチな分析クエリを記述できるようになりました。本リリースでは、CASE 式、列エイリアス、句内での算術演算、163 のスカラー関数、33 の集約関数、EXPLAIN、Common Table Expressions (CTEs)、および構造体/配列/マップの完全なアクセスが追加されました。

R2 SQL は、R2 Data Catalog に格納された Apache Iceberg ↗ テーブルを照会するための、Cloudflare のサーバーレス分散型分析クエリエンジンです。本ページではサポートされている SQL 構文を文書化します。

ハイライト

  • 列エイリアス: SELECT col AS alias がすべての句で使用可能になりました。
  • CASE 式: SQL 内での条件ロジック(searched と simple の両方)をサポートします。
  • スカラー関数: math, string, datetime, regex, crypto, encoding, type inspection の各カテゴリを含む 163 の新しい関数。
  • 集約関数: 分散・標準偏差・相関・回帰などの統計関数、ビット演算、ブール、位置ベースの集約が既存の基本的・近似関数に加わりました(合計 33 関数)。
  • 複合型: ブラケット表記で struct フィールドを照会可能、46 の配列関数、マップのキー/値抽出。
  • Common Table Expressions (CTEs): WITH ... AS で名前付きの一時結果セットを定義できます。チェーンされた CTE をサポートします。すべての CTE は同一の単一テーブルを参照する必要があります。
  • 完全な式サポート: 算術、型変換(CAST, TRY_CAST, :: ショートハンド)、および EXTRACTSELECT, WHERE, GROUP BY, HAVING, ORDER BY で使用可能。
  • EXPLAIN: クエリプランの説明を取得できます。

CASE 式と統計集約の例

SELECT
  source,
  CASE
    WHEN AVG(price) > 30 THEN 'premium'
    WHEN AVG(price) > 10 THEN 'mid-tier'
    ELSE 'budget'
  END AS tier,
  round(stddev(price), 2) AS price_volatility,
  approx_percentile_cont(price, 0.95) AS p95_price
FROM my_namespace.sales_data
GROUP BY source

構造体と配列のアクセス

SELECT
  product_name,
  pricing['price'] AS price,
  array_to_string(tags, ', ') AS tag_list
FROM my_namespace.products
WHERE array_has(tags, 'Action')
ORDER BY pricing['price'] DESC
LIMIT 10

チェーンされた CTE を用いた時系列分析

WITH monthly AS (
  SELECT
    date_trunc('month', sale_timestamp) AS month,
    department,
    COUNT(*) AS transactions,
    round(AVG(total_amount), 2) AS avg_amount
  FROM my_namespace.sales_data
  WHERE sale_timestamp BETWEEN '2025-01-01T00:00:00Z' AND '2025-12-31T23:59:59Z'
  GROUP BY date_trunc('month', sale_timestamp), department
),
ranked AS (
  SELECT
    month,
    department,
    transactions,
    avg_amount,
    CASE
      WHEN avg_amount > 1000 THEN 'high-value'
      WHEN avg_amount > 500 THEN 'mid-value'
      ELSE 'standard'
    END AS tier
  FROM monthly
  WHERE transactions > 100
)
SELECT * FROM ranked
ORDER BY month, avg_amount DESC

詳細な関数リファレンスと構文の詳細は SQL reference を参照してください。制限事項とベストプラクティスについては Limitations and best practices を参照してください。