Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Comprehensive Cloudflare platform skill covering Workers, D1, R2, KV, AI, Durable Objects, and security.
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/analytics-engine/README.md
1# Cloudflare Workers Analytics Engine Reference23Expert guidance for implementing unlimited-cardinality analytics at scale using Cloudflare Workers Analytics Engine.45## What is Analytics Engine?67Time-series analytics database designed for high-cardinality data (millions of unique dimensions). Write data points from Workers, query via SQL API. Use for:8- Custom user-facing analytics dashboards9- Usage-based billing & metering10- Per-customer/per-feature monitoring11- High-frequency instrumentation without performance impact1213**Key Capability:** Track metrics with unlimited unique values (e.g., millions of user IDs, API keys) without performance degradation.1415## Core Concepts1617| Concept | Description | Example |18|---------|-------------|---------|19| **Dataset** | Logical table for related metrics | `api_requests`, `user_events` |20| **Data Point** | Single measurement with timestamp | One API request's metrics |21| **Blobs** | String dimensions (max 20) | endpoint, method, status, user_id |22| **Doubles** | Numeric values (max 20) | latency_ms, request_count, bytes |23| **Indexes** | Filtered blobs for efficient queries | customer_id, api_key |2425## Reading Order2627| Task | Start Here | Then Read |28|------|------------|-----------|29| **First-time setup** | [configuration.md](configuration.md) → [api.md](api.md) → [patterns.md](patterns.md) | |30| **Writing data** | [api.md](api.md) → [gotchas.md](gotchas.md) (sampling) | |31| **Querying data** | [api.md](api.md) (SQL API) → [patterns.md](patterns.md) (examples) | |32| **Debugging** | [gotchas.md](gotchas.md) → [api.md](api.md) (limits) | |33| **Optimization** | [patterns.md](patterns.md) (anti-patterns) → [gotchas.md](gotchas.md) | |3435## When to Use Analytics Engine3637```38Need to track metrics? → Yes39↓40Millions of unique dimension values? → Yes41↓42Need real-time queries? → Yes43↓44Use Analytics Engine ✓4546Alternative scenarios:47- Low cardinality (<10k unique values) → Workers Analytics (free tier)48- Complex joins/relations → D1 Database49- Logs/debugging → Tail Workers (logpush)50- External tools → Send to external analytics (Datadog, etc.)51```5253## Quick Start54551. Add binding to `wrangler.jsonc`:56```jsonc57{58"analytics_engine_datasets": [59{ "binding": "ANALYTICS", "dataset": "my_events" }60]61}62```63642. Write data points (fire-and-forget, no await):65```typescript66env.ANALYTICS.writeDataPoint({67blobs: ["/api/users", "GET", "200"],68doubles: [145.2, 1], // latency_ms, count69indexes: [customerId]70});71```72733. Query via SQL API (HTTP):74```sql75SELECT blob1, SUM(double2) AS total_requests76FROM my_events77WHERE index1 = 'customer_123'78AND timestamp >= NOW() - INTERVAL '7' DAY79GROUP BY blob180ORDER BY total_requests DESC81```8283## In This Reference8485- **[configuration.md](configuration.md)** - Setup, bindings, TypeScript types, limits86- **[api.md](api.md)** - `writeDataPoint()`, SQL API, query syntax87- **[patterns.md](patterns.md)** - Use cases, examples, anti-patterns88- **[gotchas.md](gotchas.md)** - Sampling, index selection, troubleshooting8990## See Also9192- [Cloudflare Analytics Engine Docs](https://developers.cloudflare.com/analytics/analytics-engine/)93- [GraphQL Analytics API Reference](../graphql-api/) - Query built-in Cloudflare analytics (HTTP, Workers, DNS, Firewall, etc.)94- [Observability Reference](../observability/) - Workers Logs, Traces, and real-time debugging95