ClaudeCloudflare Developer Platform2026/03/23 0:00

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

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

元記事

Quick Digest

要約

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

claudejamodel: claude-sonnet-4-20250514

R2 SQL が190以上の新機能・式・複合型をサポート

Key Points

  • 190以上の新関数・式・複合型を追加
  • CASE式とCTEによる高度なクエリ記述が可能
  • 構造体・配列・マップの完全サポート

Summary

CloudflareのR2 SQLが大幅にアップデートされ、190以上の新しい関数、式、複合型のサポートが追加されました。これにより、データをエクスポートすることなく、より豊富な分析クエリを記述できるようになりました。

Key Points

  • CASE式とカラムエイリアス: 条件分岐ロジックとSELECT col AS aliasが全句で利用可能
  • 豊富な関数群: スカラー関数163個(数学、文字列、日時、正規表現、暗号化等)、集約関数33個(統計、ビット演算等)を追加
  • 複合型サポート: 構造体のブラケット記法、46個の配列関数、マップのキー/値抽出が可能
  • CTE(共通テーブル式): WITH ... AS構文でチェーン可能な一時結果セットを定義
  • 完全な式サポート: SELECT、WHERE、GROUP BY、HAVING、ORDER BY句での算術演算、型キャスト、EXTRACT関数
  • EXPLAIN機能: クエリ実行計画の確認が可能

Full Translation

翻訳

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

claudejamodel: claude-sonnet-4-20250514

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

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

2026年3月23日

R2 SQLは拡張されたSQL文法をサポートし、データをエクスポートすることなく、より豊富な分析クエリを記述できるようになりました。このリリースでは以下が追加されました:

  • CASE式
  • カラムエイリアス
  • 句内での算術演算
  • 163のスカラー関数
  • 33の集約関数
  • EXPLAIN
  • 共通テーブル式(CTE)
  • 完全なstruct/array/mapアクセス

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

ハイライト

  • カラムエイリアスSELECT col AS aliasがすべての句で動作
  • CASE式 — SQLで直接条件ロジックを記述(検索形式と単純形式)
  • スカラー関数 — 数学、文字列、日時、正規表現、暗号化、エンコーディング、型検査カテゴリにわたる163の新しい関数
  • 集約関数 — 統計(分散、標準偏差、相関、回帰)、ビット演算、ブール、位置集約が既存の基本および近似関数に追加
  • 複合型 — ブラケット記法でstruct フィールドをクエリ、46のarray関数を使用、mapのキー/値を抽出
  • 共通テーブル式(CTE)WITH ... ASを使用して名前付き一時結果セットを定義。連鎖CTEをサポート。すべてのCTEは同じ単一テーブルを参照する必要があります。
  • 完全な式サポート — SELECT、WHERE、GROUP BY、HAVING、ORDER BY句での算術演算、型キャスト(CASTTRY_CAST::省略記法)、EXTRACT

統計集約を使用した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

StructとArrayアクセス

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リファレンスを参照してください。制限事項とベストプラクティスについては、制限事項とベストプラクティスを参照してください。

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