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句での算術演算、型キャスト(
CAST、TRY_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リファレンスを参照してください。制限事項とベストプラクティスについては、制限事項とベストプラクティスを参照してください。