File size: 1,648 Bytes
6111b2b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | -- 047_aggregation_tables.sql
-- Create aggregation tables for usage data summarization
-- Hourly usage summary table
CREATE TABLE IF NOT EXISTS hourly_usage_summary (
id INTEGER PRIMARY KEY AUTOINCREMENT,
provider TEXT NOT NULL,
model TEXT NOT NULL,
date_hour TEXT NOT NULL, -- Format: YYYY-MM-DD HH:00:00
total_requests INTEGER NOT NULL DEFAULT 0,
total_input_tokens INTEGER NOT NULL DEFAULT 0,
total_output_tokens INTEGER NOT NULL DEFAULT 0,
total_cost REAL NOT NULL DEFAULT 0.0,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- Index for efficient queries by provider, model, and time range
CREATE INDEX IF NOT EXISTS idx_hourly_usage_provider_model_date
ON hourly_usage_summary(provider, model, date_hour);
-- Index for time-based queries
CREATE INDEX IF NOT EXISTS idx_hourly_usage_date
ON hourly_usage_summary(date_hour);
-- Daily usage summary table
CREATE TABLE IF NOT EXISTS daily_usage_summary (
id INTEGER PRIMARY KEY AUTOINCREMENT,
provider TEXT NOT NULL,
model TEXT NOT NULL,
date TEXT NOT NULL, -- Format: YYYY-MM-DD
total_requests INTEGER NOT NULL DEFAULT 0,
total_input_tokens INTEGER NOT NULL DEFAULT 0,
total_output_tokens INTEGER NOT NULL DEFAULT 0,
total_cost REAL NOT NULL DEFAULT 0.0,
created_at TEXT NOT NULL DEFAULT (datetime('now'))
);
-- Index for efficient queries by provider, model, and date
CREATE INDEX IF NOT EXISTS idx_daily_usage_provider_model_date
ON daily_usage_summary(provider, model, date);
-- Index for date-based queries
CREATE INDEX IF NOT EXISTS idx_daily_usage_date
ON daily_usage_summary(date);
|