179 lines
6.0 KiB
Markdown
179 lines
6.0 KiB
Markdown
# 数据分析实时大屏 - 测试数据说明
|
||
|
||
本目录包含用于测试数据分析实时大屏功能的 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 <DB_HOST> -p <DB_PORT> -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. **创建连接**
|
||
- 主机:`<DB_HOST>`
|
||
- 端口:`<DB_PORT>`
|
||
- 数据库:`postgres`
|
||
- 用户名:`postgres`(或你的管理员账号)
|
||
- 密码:`<DB_PASSWORD>`
|
||
|
||
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. 使用循环生成大量测试数据(注意性能)
|