mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-04-08 03:00:28 -04:00
- user_block_spending: use ->> instead of -> for JSONB field extraction before casting to int (avoids runtime cast errors) - generate_views: create analytics_readonly as NOLOGIN to avoid a usable role with a known default password - generate_views: percent-encode DB credentials in the URI builder so passwords with reserved chars (@, :, /) connect correctly - graph_execution: remove WHERE filter on sensitive_action_safe_mode before DISTINCT ON so the latest LibraryAgent version always wins (fixes possibly_ai being sticky once any version had the flag set) - retention_agent: use DISTINCT ON ordered by version DESC instead of MAX(name) so renamed agents resolve to their latest name - retention_login_daily: add 90-day cohort_start filter to first_login CTE so the view matches its documented window - user_onboarding_funnel: map the 8 missing OnboardingStep enum values (VISIT_COPILOT, RE_RUN_AGENT, SCHEDULE_AGENT, RUN_AGENTS, RUN_3_DAYS, TRIGGER_WEBHOOK, RUN_14_DAYS, RUN_AGENTS_100) to step_order 15-22 - users_activities: use updatedAt instead of createdAt for last_agent_save_time; add node_execution_incomplete and node_execution_review status columns
72 lines
3.8 KiB
SQL
72 lines
3.8 KiB
SQL
-- =============================================================
|
|
-- View: analytics.user_block_spending
|
|
-- Looker source alias: ds6 | Charts: 5
|
|
-- =============================================================
|
|
-- DESCRIPTION
|
|
-- One row per credit transaction (last 90 days).
|
|
-- Shows how users spend credits broken down by block type,
|
|
-- LLM provider and model. Joins node execution stats for
|
|
-- token-level detail.
|
|
--
|
|
-- SOURCE TABLES
|
|
-- platform.CreditTransaction — Credit debit/credit records
|
|
-- platform.AgentNodeExecution — Node execution stats (for token counts)
|
|
--
|
|
-- OUTPUT COLUMNS
|
|
-- transactionKey TEXT Unique transaction identifier
|
|
-- userId TEXT User who was charged
|
|
-- amount DECIMAL Credit amount (positive = credit, negative = debit)
|
|
-- negativeAmount DECIMAL amount * -1 (convenience for spend charts)
|
|
-- transactionType TEXT Transaction type (e.g. 'USAGE', 'REFUND', 'TOP_UP')
|
|
-- transactionTime TIMESTAMPTZ When the transaction was recorded
|
|
-- blockId TEXT Block UUID that triggered the spend
|
|
-- blockName TEXT Human-readable block name
|
|
-- llm_provider TEXT LLM provider (e.g. 'openai', 'anthropic')
|
|
-- llm_model TEXT Model name (e.g. 'gpt-4o', 'claude-3-5-sonnet')
|
|
-- node_exec_id TEXT Linked node execution UUID
|
|
-- llm_call_count INT LLM API calls made in that execution
|
|
-- llm_retry_count INT LLM retries in that execution
|
|
-- llm_input_token_count INT Input tokens consumed
|
|
-- llm_output_token_count INT Output tokens produced
|
|
--
|
|
-- WINDOW
|
|
-- Rolling 90 days (createdAt > CURRENT_DATE - 90 days)
|
|
--
|
|
-- EXAMPLE QUERIES
|
|
-- -- Total spend per user (last 90 days)
|
|
-- SELECT "userId", SUM("negativeAmount") AS total_spent
|
|
-- FROM analytics.user_block_spending
|
|
-- WHERE "transactionType" = 'USAGE'
|
|
-- GROUP BY 1 ORDER BY total_spent DESC;
|
|
--
|
|
-- -- Spend by LLM provider + model
|
|
-- SELECT "llm_provider", "llm_model",
|
|
-- SUM("negativeAmount") AS total_cost,
|
|
-- SUM("llm_input_token_count") AS input_tokens,
|
|
-- SUM("llm_output_token_count") AS output_tokens
|
|
-- FROM analytics.user_block_spending
|
|
-- WHERE "llm_provider" IS NOT NULL
|
|
-- GROUP BY 1, 2 ORDER BY total_cost DESC;
|
|
-- =============================================================
|
|
|
|
SELECT
|
|
c."transactionKey" AS transactionKey,
|
|
c."userId" AS userId,
|
|
c."amount" AS amount,
|
|
c."amount" * -1 AS negativeAmount,
|
|
c."type" AS transactionType,
|
|
c."createdAt" AS transactionTime,
|
|
c.metadata->>'block_id' AS blockId,
|
|
c.metadata->>'block' AS blockName,
|
|
c.metadata->'input'->'credentials'->>'provider' AS llm_provider,
|
|
c.metadata->'input'->>'model' AS llm_model,
|
|
c.metadata->>'node_exec_id' AS node_exec_id,
|
|
(ne."stats"->>'llm_call_count')::int AS llm_call_count,
|
|
(ne."stats"->>'llm_retry_count')::int AS llm_retry_count,
|
|
(ne."stats"->>'input_token_count')::int AS llm_input_token_count,
|
|
(ne."stats"->>'output_token_count')::int AS llm_output_token_count
|
|
FROM platform."CreditTransaction" c
|
|
LEFT JOIN platform."AgentNodeExecution" ne
|
|
ON (c.metadata->>'node_exec_id') = ne."id"::text
|
|
WHERE c."createdAt" > CURRENT_DATE - INTERVAL '90 days'
|