6.0 KiB
6.0 KiB
数据分析实时大屏 - 测试数据说明
本目录包含用于测试数据分析实时大屏功能的 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(推荐)
-
打开 Supabase Studio / Dashboard
- 请使用你自己的部署地址访问(不要在仓库文档里硬编码地址/账号/密码)。
-
打开 SQL Editor
- 在左侧菜单找到 "SQL Editor"
- 点击 "New Query"
-
执行脚本
- 复制
01_create_tables.sql的内容,粘贴并执行 - 复制
02_insert_test_data.sql的内容,粘贴并执行 - (可选)复制
03_test_queries.sql的内容,验证数据
- 复制
方式 2: 使用命令行(PostgreSQL)
# 连接到 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)
-
创建连接
- 主机:
<DB_HOST> - 端口:
<DB_PORT> - 数据库:
postgres - 用户名:
postgres(或你的管理员账号) - 密码:
<DB_PASSWORD>
- 主机:
-
执行 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,插入测试数据时需要注意:
-
推荐方式:使用 Supabase Dashboard 的 SQL Editor 执行脚本
- Dashboard 默认使用
service_role权限,可以绕过 RLS - 无需额外配置,直接执行即可
- Dashboard 默认使用
-
命令行方式:如果使用命令行或脚本执行
- 需要临时禁用 RLS(见
02_insert_test_data.sql中的注释说明) - 或使用
SECURITY DEFINER函数(见TEST_DATA_INSERT_GUIDE.md)
- 需要临时禁用 RLS(见
-
详细说明:请查看
TEST_DATA_INSERT_GUIDE.md获取完整的插入指南
注意事项
-
时间依赖
- 测试数据使用了
NOW()和相对时间(如INTERVAL '1 hour') - 每次执行时,数据的时间戳会基于当前时间生成
- 建议在测试前先清空相关表的数据(谨慎操作)
- 测试数据使用了
-
数据冲突
- 脚本使用了
ON CONFLICT DO NOTHING或ON CONFLICT DO UPDATE - 可以多次执行而不会产生重复数据
- 如需重新生成数据,请先清空表
- 脚本使用了
-
状态值
- 订单状态:
2表示已支付/已完成 - 用户会话:
is_active = true表示活跃会话
- 订单状态:
-
UUID 格式
- 所有 ID 使用 UUID 格式
- 测试数据使用了固定的 UUID 便于识别
-
RLS 权限
- 插入数据后,前端查询需要用户已登录
- 测试数据的
user_id需要与登录用户的auth.uid()匹配才能查询到 - 或者使用公开数据(如
products、merchants表)
清理测试数据
如需清理测试数据,请使用独立的清理脚本(例如 04_cleanup.sql)。
验证实时大屏功能
执行完测试数据后,在数据分析页面应该能看到:
- 实时GMV: 约 ¥3,500(根据实际订单金额)
- 实时订单: 15笔
- 在线用户: 5人
- 转化率: 约 50-80%(根据实际计算)
增长率会根据昨日同时段的数据自动计算。
问题排查
如果实时大屏显示异常,可以:
- 执行
03_test_queries.sql中的查询验证数据 - 检查订单状态是否为
2(已支付) - 检查时间范围是否正确(今日 vs 昨日同时段)
- 检查用户会话的
last_active_at是否在最近5分钟内 - 查看浏览器控制台的错误信息
扩展测试数据
如果需要更多测试数据,可以:
- 修改
02_insert_test_data.sql中的 INSERT 语句 - 调整订单金额、数量和时间分布
- 添加更多用户和会话数据
- 使用循环生成大量测试数据(注意性能)