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(公式ドキュメント参照)