R2 SQL now supports aggregations and schema discovery
R2 SQL now supports aggregation functions, GROUP BY, HAVING, along with schema discovery commands to make it easy to explore your data catalog.
You can now perform aggregations on Apache Iceberg tables in R2 Data Catalog using standard SQL functions including COUNT(*), SUM(), AVG(), MIN(), and MAX(). Combine these with GROUP BY to analyze data across dimensions, and use HAVING to filter aggregated results.
-- Calculate average transaction amounts by departmentSELECT department, COUNT(*), AVG(total_amount)FROM my_namespace.sales_dataWHERE region = 'North'GROUP BY departmentHAVING COUNT(*) > 50ORDER BY AVG(total_amount) DESC-- Find high-value departmentsSELECT department, SUM(total_amount)FROM my_namespace.sales_dataGROUP BY departmentHAVING SUM(total_amount) > 50000New metadata commands make it easy to explore your data catalog and understand table structures:
SHOW DATABASESorSHOW NAMESPACES- List all available namespacesSHOW TABLES IN namespace_name- List tables within a namespaceDESCRIBE namespace_name.table_name- View table schema and column types
β― npx wrangler r2 sql query "{ACCOUNT_ID}_{BUCKET_NAME}" "DESCRIBE default.sales_data;"
β
οΈ wrangler 4.54.0βββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββ¬βββββββββββββββββ¬βββββββββββ¬ββββββββββββββββββ¬ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ column_name β type β required β initial_default β write_default β doc βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β sale_id β BIGINT β false β β β Unique identifier for each sales transaction βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β sale_timestamp β TIMESTAMPTZ β false β β β Exact date and time when the sale occurred (used for partitioning) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β department β TEXT β false β β β Product department (8 categories: Electronics, Beauty, Home, Toys, Sports, Food, Clothing, Books) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β category β TEXT β false β β β Product category grouping (4 categories: Premium, Standard, Budget, Clearance) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β region β TEXT β false β β β Geographic sales region (5 regions: North, South, East, West, Central) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β product_id β INT β false β β β Unique identifier for the product sold βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β quantity β INT β false β β β Number of units sold in this transaction (range: 1-50) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β unit_price β DECIMAL(10, 2) β false β β β Price per unit in dollars (range: $5.00-$500.00) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β total_amount β DECIMAL(10, 2) β false β β β Total sale amount before tax (quantity Γ unit_price with discounts applied) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β discount_percent β INT β false β β β Discount percentage applied to this sale (0-50%) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β tax_amount β DECIMAL(10, 2) β false β β β Tax amount collected on this sale βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β profit_margin β DECIMAL(10, 2) β false β β β Profit margin on this sale as a decimal percentage βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β customer_id β INT β false β β β Unique identifier for the customer who made the purchase βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β is_online_sale β BOOLEAN β false β β β Boolean flag indicating if sale was made online (true) or in-store (false) βββββββββββββββββββββΌβββββββββββββββββΌβββββββββββΌββββββββββββββββββΌββββββββββββββββΌββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€β sale_date β DATE β false β β β Calendar date of the sale (extracted from sale_timestamp) βββββββββββββββββββββ΄βββββββββββββββββ΄βββββββββββ΄ββββββββββββββββββ΄ββββββββββββββββ΄ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββRead 0 B across 0 files from R2On average, 0 B / sTo learn more about the new aggregation capabilities and schema discovery commands, check out the SQL reference. If you're new to R2 SQL, visit our getting started guide to begin querying your data.