AI 数据分析与智能可视化:把问题拆到查询与图表之间
一个“帮我看看本月转化为什么下降”的请求,不能直接交给模型生成 SQL 和结论。它至少混合了时间范围、指标定义、对比基线和图表形式四件事。先让界面或服务端把这些项收成结构化参数,模型只用于把自然语言解释成候选值;真正的查询、聚合和渲染仍由受限工具执行。
给请求一个可检查的形状
可以定义 metric、date_range、comparison、dimension、chart_type 五个字段。比如将“本月”转换成明确的起止日期,而不是在 SQL 里留下模糊表达。metric 只能从指标字典选择;dimension 要检查是否允许当前角色访问。缺字段时返回缺什么,枚举不合法时返回可选项,权限不足与数据为空不能混成同一个提示。
数据服务收到参数后记录 request_id、指标版本和数据快照时间。图表配置同样写入记录:柱图、折线图和分组方式会影响读者如何理解结果。这样有人质疑结论时,可以从看板反查到具体查询,而不是只看到一段生成文字。
查询与解释分两步
第一步只取数。以订单按天聚合为例,查询应固定时区、过滤已取消订单,并在返回中带上样本行数。第二步再让模型根据结果草拟解释,但提示中要要求引用日期、维度和值;没有足够证据时输出“需要补充对比维度”,不要补造原因。前端把数值卡片和解释文字区分展示,避免读者把推测当成事实。
对于金额、客户名称等敏感列,传给模型的内容只保留必要的聚合值或脱敏标签。错误日志也不要回显原始筛选条件。查询超时、数据源不可用和图表计算失败分别记录,方便决定是重试、降级为表格还是提示用户稍后再看。
用三个请求做发布前检查
准备一份固定小样本,其中包含正常数据、无权限部门和空日期区间。分别提交“查看华东本周成交额”“查看无权限部门”“查看不存在的未来月份”。核对:合法请求的 SQL 只读取允许的表;无权限请求不泄露字段名;空结果显示明确的时间范围;每次响应都能用 request_id 找到输入摘要和执行结果。
最后再改一次指标口径,例如把成交额从含税切为未税,确认指标版本变化会显示在看板和导出文件中。通过这组检查,文章讨论的就不是抽象的“智能分析”,而是可复现的查询边界与解释边界。
还应检查图表下载与页面展示是否使用同一份聚合结果。若下载报表在另一个时间点重新查询,用户可能看到两组不一致的数字。将结果批次号带到链接中,并在页面显示生成时间,可以避免这种难以解释的差异。对模型生成的说明,保留被引用的指标名称与数值;人工修改结论时同样留下修改记录,保证读者能区分数据事实和业务判断。
当用户提出的数据范围超出当前权限或指标字典时,系统应该提出澄清问题,而不是用相邻指标替代。这样的拒绝行为也应纳入测试样本。它看似减少了“智能回答”的覆盖面,却能避免把错误问题包装成可信的图表。




