# 数据分析实时大屏 - 测试数据说明 本目录包含用于测试数据分析实时大屏功能的 SQL 脚本和测试数据。 ## 文件说明 ### 1. `01_create_tables.sql` 创建所需的数据表结构,包括: - `orders` - 订单表 - `user_sessions` - 用户会话表 - `users` - 用户表 - `products` - 商品表(可选) - `order_items` - 订单商品关联表(可选) - `page_views` - 访问日志表(可选) **执行顺序:** 首先执行此文件创建表结构 ### 2. `02_insert_test_data.sql` 插入测试数据,包括: - 8个测试用户 - 5个在线用户会话(最近5分钟内有活动) - 15个今日订单(用于计算实时GMV和订单数) - 10个昨日同时段订单(用于计算增长率) - 15条访问日志(用于转化率计算) **执行顺序:** 在创建表后执行此文件插入测试数据 ### 3. `03_test_queries.sql` 包含各种测试查询,用于验证数据计算逻辑: - 实时GMV查询 - 在线用户查询 - 转化率查询 - 综合实时大屏数据查询 - 数据验证查询 **执行顺序:** 在插入测试数据后执行此文件验证数据 ## 使用方法 ### 方式 1: 通过 Supabase Dashboard(推荐) 1. **打开 Supabase Studio / Dashboard** - 请使用你自己的部署地址访问(不要在仓库文档里硬编码地址/账号/密码)。 2. **打开 SQL Editor** - 在左侧菜单找到 "SQL Editor" - 点击 "New Query" 3. **执行脚本** - 复制 `01_create_tables.sql` 的内容,粘贴并执行 - 复制 `02_insert_test_data.sql` 的内容,粘贴并执行 - (可选)复制 `03_test_queries.sql` 的内容,验证数据 ### 方式 2: 使用命令行(PostgreSQL) ```bash # 连接到 Supabase Postgres(参数请按你的环境填写) psql -h -p -U postgres -d postgres # 执行 SQL 文件(需要完整路径) \i D:/datas/hfkj/mall/pages/mall/analytics/test/01_create_tables.sql \i D:/datas/hfkj/mall/pages/mall/analytics/test/02_insert_test_data.sql \i D:/datas/hfkj/mall/pages/mall/analytics/test/03_test_queries.sql ``` ### 方式 3: 使用图形工具(DBeaver / pgAdmin) 1. **创建连接** - 主机:`` - 端口:`` - 数据库:`postgres` - 用户名:`postgres`(或你的管理员账号) - 密码:`` 2. **执行 SQL** - 打开 SQL 编辑器 - 复制 SQL 文件内容并执行 **详细说明请查看:** - **`ANALYTICS_DATA_QUICK_START.md`** - ⭐ **SQL 文件执行顺序指南(必读!)** - `SQL_USAGE_GUIDE.md` - SQL 脚本执行详细指南 - `TEST_DATA_INSERT_GUIDE.md` - 测试数据插入指南(包含 RLS 处理说明) ## 测试数据说明 ### 实时GMV测试数据 - **今日订单总数:** 15笔 - **今日GMV:** 约 3,500 元(根据订单金额累加) - **昨日同时段订单:** 10笔 - **昨日同时段GMV:** 约 2,200 元 - **预期增长率:** 约 59%((3500-2200)/2200 * 100) ### 实时订单测试数据 - **今日订单数:** 15笔 - **昨日同时段订单数:** 10笔 - **预期增长率:** 50%((15-10)/10 * 100) ### 在线用户测试数据 - **最近5分钟内有活动的用户:** 5个 - 这些用户会在实时大屏中显示为"在线用户" ### 转化率测试数据 - **今日访问用户数:** 约 10-15个(从 user_sessions 表统计) - **今日下单用户数:** 约 8个(从 orders 表去重统计) - **预期转化率:** 约 53-80%(根据实际数据计算) ## ⚠️ 重要:RLS(行级安全策略)说明 **所有表已启用 RLS**,插入测试数据时需要注意: 1. **推荐方式**:使用 Supabase Dashboard 的 SQL Editor 执行脚本 - Dashboard 默认使用 `service_role` 权限,可以绕过 RLS - 无需额外配置,直接执行即可 2. **命令行方式**:如果使用命令行或脚本执行 - 需要临时禁用 RLS(见 `02_insert_test_data.sql` 中的注释说明) - 或使用 `SECURITY DEFINER` 函数(见 `TEST_DATA_INSERT_GUIDE.md`) 3. **详细说明**:请查看 `TEST_DATA_INSERT_GUIDE.md` 获取完整的插入指南 ## 注意事项 1. **时间依赖** - 测试数据使用了 `NOW()` 和相对时间(如 `INTERVAL '1 hour'`) - 每次执行时,数据的时间戳会基于当前时间生成 - 建议在测试前先清空相关表的数据(谨慎操作) 2. **数据冲突** - 脚本使用了 `ON CONFLICT DO NOTHING` 或 `ON CONFLICT DO UPDATE` - 可以多次执行而不会产生重复数据 - 如需重新生成数据,请先清空表 3. **状态值** - 订单状态:`2` 表示已支付/已完成 - 用户会话:`is_active = true` 表示活跃会话 4. **UUID 格式** - 所有 ID 使用 UUID 格式 - 测试数据使用了固定的 UUID 便于识别 5. **RLS 权限** - 插入数据后,前端查询需要用户已登录 - 测试数据的 `user_id` 需要与登录用户的 `auth.uid()` 匹配才能查询到 - 或者使用公开数据(如 `products`、`merchants` 表) ## 清理测试数据 如需清理测试数据,请使用独立的清理脚本(例如 `04_cleanup.sql`)。 ## 验证实时大屏功能 执行完测试数据后,在数据分析页面应该能看到: 1. **实时GMV:** 约 ¥3,500(根据实际订单金额) 2. **实时订单:** 15笔 3. **在线用户:** 5人 4. **转化率:** 约 50-80%(根据实际计算) 增长率会根据昨日同时段的数据自动计算。 ## 问题排查 如果实时大屏显示异常,可以: 1. 执行 `03_test_queries.sql` 中的查询验证数据 2. 检查订单状态是否为 `2`(已支付) 3. 检查时间范围是否正确(今日 vs 昨日同时段) 4. 检查用户会话的 `last_active_at` 是否在最近5分钟内 5. 查看浏览器控制台的错误信息 ## 扩展测试数据 如果需要更多测试数据,可以: 1. 修改 `02_insert_test_data.sql` 中的 INSERT 语句 2. 调整订单金额、数量和时间分布 3. 添加更多用户和会话数据 4. 使用循环生成大量测试数据(注意性能)