基于阿里云RDS SQL Server + 函数计算 + 通义AI构建智能销售分析平台Demo
想象一下:你的销售数据躺在RDS数据库里,每天靠人工拉报表、写Excel、猜趋势,不仅效率低,还可能漏掉关键商机。今天咱们就造一个"会思考"的销售分析平台------让数据库负责存储,函数计算负责调度,通义AI负责"开脑洞",最终实现一句话问出销售答案。## 为什么需要"三剑客"组合?传统销售分析系统往往是"重客户端+重数据库",改一个指标就要发版。而阿里云这套组合拳的特点是:- RDS SQL Server :成熟的关系型数据库,存储销售订单、客户信息等结构化数据,支持复杂聚合查询。- 函数计算(FC) :无服务器计算,按调用次数计费,秒级弹性伸缩,适合处理短时、事件驱动的分析任务。- 通义AI(如通义千问API) :自然语言理解+生成能力,可以将用户的提问转化为SQL,或把查询结果解读成业务建议。这三者结合,能实现"用户发问 → AI转SQL → 查询RDS → 结果回传 → AI生成结论"的闭环,全程无需人工写SQL。## 架构设计:从"一问一答"到"主动洞察"
用户输入自然语言问题(如"上个月华东区销售额下降原因?") ↓函数计算收到HTTP请求 ↓调用通义AI将问题转为SQL查询语句 ↓连接RDS SQL Server执行查询 ↓将查询结果(表格/JSON)返回给通义AI ↓通义AI生成业务解读(如"华东区下降主因是A产品销量下滑20%,建议加大促销") ↓返回给前端展示## 第一步:准备RDS SQL Server数据表我们先建一个简单的销售订单表,用于存储订单明细。通过阿里云DMS或SQL Server Management Studio执行:sql-- 创建销售订单表CREATE TABLE sales_orders ( order_id INT PRIMARY KEY, region VARCHAR(50), -- 区域:华东、华北等 product_name VARCHAR(100), -- 产品名称 quantity INT, -- 销售数量 unit_price DECIMAL(10,2), -- 单价 order_date DATE -- 下单日期);-- 插入示例数据INSERT INTO sales_orders VALUES(1, '华东', '智能手表', 120, 1999.00, '2024-03-01'),(2, '华北', '智能手表', 80, 1999.00, '2024-03-02'),(3, '华东', '蓝牙耳机', 300, 499.00, '2024-03-03'),(4, '华南', '智能音箱', 150, 899.00, '2024-03-04'),(5, '华东', '智能手表', 90, 1999.00, '2024-04-01');注意:生产环境建议用时间分区表或索引优化查询性能,但Demo为了演示简洁,直接用单表。## 第二步:函数计算编写分析核心逻辑函数计算支持Python 3.10等运行时。我们创建一个HTTP触发函数,负责接收问题、调用通义AI、查询数据库。先安装依赖pymssql用于连接SQL Server。python# 函数计算入口:处理请求并返回分析结果import jsonimport pymssqlimport requests# 从环境变量读取配置(在FC控制台设置)DB_HOST = 'your_rds_host.sqlserver.rds.aliyuncs.com'DB_USER = 'sales_user'DB_PASSWORD = 'your_password'DB_NAME = 'sales_db'def handler(event, context): # 1. 解析用户输入 body = json.loads(event) question = body.get('question', '上个月各区域销售总额排名') # 2. 调用通义AI将问题转为SQL(简化版:直接拼接,生产用模型) sql = generate_sql(question) # 3. 执行查询 result = query_rds(sql) # 4. 调用通义AI生成解读(示例:直接返回结果,实际可让AI分析趋势) summary = f"查询结果:{json.dumps(result, ensure_ascii=False)}" return { 'statusCode': 200, 'body': json.dumps({'sql': sql, 'data': result, 'analysis': summary}, ensure_ascii=False) }def query_rds(sql): """连接RDS并执行SQL,返回记录列表""" conn = pymssql.connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME) cursor = conn.cursor() cursor.execute(sql) columns = [col[0] for col in cursor.description] rows = cursor.fetchall() result = [dict(zip(columns, row)) for row in rows] conn.close() return resultdef generate_sql(question): """模拟AI转SQL,真实场景应调用通义千问API""" # 简单规则:如果问题包含"销售额",生成聚合查询 if '销售额' in question: return "SELECT region, SUM(quantity * unit_price) AS total_sales FROM sales_orders GROUP BY region ORDER BY total_sales DESC" # 其他情况返回基础查询 return "SELECT * FROM sales_orders LIMIT 10"## 第三步:让通义AI真正"懂业务"上面的generate_sql只是占位符,我们接入通义千问API来动态生成SQL,并让AI解读结果。函数计算中调用通义AI的示例:pythondef call_tongyi(prompt): """调用通义千问API,获取生成内容""" url = "https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation" headers = { "Authorization": "Bearer your_dashscope_api_key", "Content-Type": "application/json" } payload = { "model": "qwen-turbo", "input": {"prompt": prompt}, "parameters": {"max_tokens": 500} } resp = requests.post(url, json=payload, headers=headers) return resp.json()['output']['text']# 改造generate_sql:让AI根据问题生成SQLdef generate_sql_with_ai(question): prompt = f""" 你是SQL专家。给定一个SQL Server数据库表sales_orders,包含字段:order_id, region, product_name, quantity, unit_price, order_date。 请将以下自然语言问题转换为SQL查询语句,只输出SQL,不要解释: 问题:{question} """ sql = call_tongyi(prompt).strip() # 防止AI输出多余字符 if sql.startswith(''): sql = sql.split('\n')1.rsplit('')[0] return sql这样,用户问"哪个产品销量最高?",AI会生成SELECT product_name, SUM(quantity) AS total_qty FROM sales_orders GROUP BY product_name ORDER BY total_qty DESC,然后函数计算执行并返回结果。## 前端展示与交互(可选)你可以在函数计算返回的数据基础上,用简单的HTML+ECharts做可视化。但Demo核心是后端逻辑,前端可以只显示JSON结果。## 部署与测试1. 在阿里云函数计算控制台创建服务,选择Python 3.10运行时。2. 配置环境变量(数据库连接信息、API Key)。3. 创建HTTP触发器,获得访问URL。4. 用Postman或浏览器发送POST请求,body为{"question":"上月销售额前3的产品"},即可看到AI生成的SQL和查询结果。## 性能与成本优化建议- 连接池 :函数计算每次调用都新建数据库连接较慢,建议使用pymssql连接池或改用RDS的Proxy。- 超时设置 :函数计算默认超时3秒,但AI生成SQL可能需要几秒,建议设置为10秒。- 缓存:对于高频问题(如"今日销售额"),可以用Redis缓存结果,避免重复计算。## 总结这个Demo展示了"数据库 + 无服务器计算 + AI"的轻量级组合能力。你可以从"手动写SQL"升级为"AI代写",从"看报表数字"升级为"AI告诉你下一步该做什么"。实际生产环境还可以接入更多数据源(如OSS文件、日志服务),并让AI进行预测性分析(如销量预测、异常检测)。技术要点回顾:- RDS SQL Server负责数据存储和复杂查询。- 函数计算提供按需算力和事件驱动调用,成本低。- 通义AI实现了自然语言到SQL的转换,以及业务洞察生成。希望这个Demo能给你启发,动手试试吧!如果你在部署中遇到问题,欢迎在评论区交流。