从零用低代码平台制作数据大屏(智表 + AJ-Report 实战)
本文记录我在公司实际项目中,用智表(SmartExcel 低代码平台)配合 AJ-Report 制作业务数据大屏的完整流程。
包含:数据字典视图搭建、动态数据源配置、大屏组件使用,以及我踩过的几个典型坑和解决办法。
适合刚接触低代码 BI 的同学参考。
一、背景:我们要解决什么问题
公司日常的业务数据(采购、生产、库存、销售)都躺在 SQL Server 里,但业务部门想要一块实时可视化的数据大屏,能随时看到业务动态,而不是天天人工导 Excel。
低代码方案的好处是:不用写前端、不用写接口,在平台上通过「配置数据源 + 拖拽组件」就能拼出大屏。本文用的两个工具:
| 工具 | 角色 | 说明 |
|---|---|---|
| 智表(SmartExcel) | 低代码平台 / 数据源底座 | 负责把业务数据库里的表结构、数据暴露成「数据源」 |
| AJ-Report | 开源 BI 大屏工具 | 负责连接数据源、拖拽图表组件、生成可视化大屏 |
⚠️ 说明:AJ-Report 本身是开源项目(非金蝶产品),我们公司把它集成在智表环境里一起用,所以文中会交替提到两者。
二、环境准备(前置条件)
开始前确认你有这些东西:
- 智表 Excel 客户端(设计器),能登录公司服务器
- AJ-Report 访问地址:一般是
http://你的服务器IP:端口/index.html#,问公司要 - 数据库账号:通常是
sa,密码问管理员,或者在「数据中心 - 数据源」里能翻到 - 目标数据库:本文示例库名
TYX - 数据库是SQL Server(端口默认 1433)
如果 AJ-Report 连数据库报「连接超时」,基本是数据库服务器 1433 端口没对你开放,直接找运维处理,个人电脑上折腾不了。
三、第一步:在智表里搭「数据字典视图」
大屏最终要展示的是业务数据,但我们有几十张表、几百个字段,先用智表把它们的结构整理成一张「数据字典视图」,后续取数会方便很多。
3.1 导出数据字典模板
打开Excel 客户端,进入「系统管理」,右键点击公司的数据字典,选择导出数据字典模板。
3.2 建立内部数据源(核心 SQL)
进入「系统管理 → 内部数据源 → 新增 → 通过 SQL 建立」,把下面这段 SQL 粘贴进去。
这段 SQL 的作用是:从智表自己的系统表里,把「每张表有哪些字段、每个字段是什么类型」查出来,拼成一张数据字典。
SELECTT2.tabIDAStabID,T2.tabNameAS表名,T2.sName2AS表别名,T1.fieldIDAS字段ID,T1.fieldNameAS字段名,T1.sName2AS字段别名,CONCAT('tabDIYTable',CAST(T2.tabIDASvarchar(50)))AS数据库表名,CONCAT('F',CAST(T1.fieldIDASvarchar(50)))AS数据库字段名,T3.TypeIDAS类型ID,T3.TypeNameAS数据类型,T3.OriginTypeAS数据库数据类型,T3.iLenAS数据长度FROMtabDIYTableAST2LEFTJOINtabDIYTableFieldAST1ONT1.tabID=T2.tabIDLEFTJOINtabDataTypeAST3ONT3.TypeID=T1.TypeID3.3 形成数据表
保存后,系统会生成一张内部数据表,起名为数据字典视图。
3.4 导入模板并检查相关性
点击「系统管理 → 管理操作」,下拉框选择导入模板,点检查相关性。如果提示「未缺少」,说明依赖关系都齐了,没问题。
3.5 关键一步:设置返回值(很多人卡在这)
如果你填了表名、公式也不报错,但数据就是不出来,八成是没设返回值。
操作:打开模板 →数据表管理 → …主表 → 右击设置返回值,把id设置进去。
再点「创建 SQL」复制出来,后面 AJ-Report 里要用。
我们可以发现这个SQL有问题,from后面没有加表。我们可以检查一下公式。看数据库表名是否对照着。
还有其他问题的话,另一个公式也可看看,是不是对应的。
之后在生成这样就没问题。
四、第二步:登录 AJ-Report 创建大屏
用公司给的地址登录:
http://你的服务器IP:端口/index.html#填入用户名和密码。
进入后:点击报表设计 → 报表管理 → 新增,填写:
- 报表名称:随意,比如「生产数据大屏」
- 报表编码:必须唯一,不能和已有的重复
- 报表类型:选大屏报表
保存后点更多 → 设计,进入大屏设计器。
五、第三步:配置动态数据源
5.1 连接数据库
在大屏设计器里点数据源,新建连接。数据库一般选SQL Server,账号sa,密码问人要(或在数据中心-数据源里找)。
点测试,成功后点确定。
测试通过的条件是:AJ-Report 服务器能访问到数据库服务器的 1433 端口。如果超时,见文末 FAQ。
5.2 配置数据集
点击数据集 → 新增,选择SQL方式,把第 3.5 步复制的 SQL 粘贴进去。数据源选刚才建的,编码保持唯一即可,名称随意。
六、第四步:使用大屏组件
6.1 滚动表格(最常用)
从文本栏拖一个表格组件到工作区,右侧可以设置表头、表体样式。
- 设置字段时,宽度 100%表示把表格总宽按字段数平分后的单个宽度
- 点「数据」绑定动态数据源,刷新时间1 秒 = 1000 毫秒(图里 30 秒即半分钟刷新一次)
绑定后如果数据框没出现,去「配置」里编辑,名字随便取,但 Key 值必须和上面数据集返回的 Key 对应,这样才能正确映射字段。
6.2 大屏背景与图片
点大屏空白处,可以设置背景颜色,也能插入图片。注意图片格式必须是 png(其他格式可能不显示)。整体刷新可以设 1800 秒(30 分钟)。
6.3 其他组件
平台还提供边框、地图、饼图、折线图等组件,直接拖拽即可,效果如下:
七、常见问题与排坑(FAQ)
这部分是我实际踩过的坑,建议重点看。
Q1:报"SQL 执行结果的字段数量必须跟当前内部数据表的项目数量一致"
原因:你的 SQL 查出来多少列,对应的内部数据表就必须有多少个字段,两边必须完全对齐。
解决:数一下内部数据表(如「数据字典视图」)的字段数,把 SQL 的 SELECT 列数改到一致。
Q2:报"列名 ‘tabID’ 无效"(原始出错信息来自某条取数公式)
原因:公式里引用的字段名tabID,但你的 SQL 里已经把它改名成表单ID(或别的)。
解决:SQL 返回的字段名 和 公式里引用的字段名必须完全一致。把公式里的tabID改成实际的列名即可。
口诀:SQL 列名 = 内部数据表字段名 = 公式引用名,三者统一就不报错。
Q3:填了表名、不报错,但数据不出来
原因:模板的「返回值」没设置,导致上游查不到tabID/表单ID,下游字段查询自然为空。
解决:见 3.5 节,去「数据表管理 → 主表 → 设置返回值」,把id设进去。
Q4:AJ-Report 连数据库超时
原因:数据库服务器 1433 端口没对 AJ-Report 服务器开放(常见于内网隔离)。
解决:个人无法处理,把报错发给运维,让他放行 1433 端口,或确认真实端口号(不一定是 1433)。
八、总结
整个流程串起来就是:
业务数据库(SQL Server) ↓ 智表内部数据源(SQL) 暴露成「数据字典视图」 ↓ 导出/导入模板,设置返回值 AJ-Report 动态数据源(连接SQL Server) ↓ 数据集(SQL) 大屏组件(表格/图表/地图) → 可视化大屏低代码做大屏的核心难点不在"拖组件",而在数据源和字段映射——只要 SQL 列名、内部表字段名、公式引用名三处对得上,剩下的就是拖拽和美化了。
希望这篇能帮你少走弯路。有问题欢迎评论区交流。
附录:完整数据字典 SQL(可直接用)
SELECTT2.tabIDAStabID,T2.tabNameAS表名,T2.sName2AS表别名,T1.fieldIDAS字段ID,T1.fieldNameAS字段名,T1.sName2AS字段别名,CONCAT('tabDIYTable',CAST(T2.tabIDASvarchar(50)))AS数据库表名,CONCAT('F',CAST(T1.fieldIDASvarchar(50)))AS数据库字段名,T3.TypeIDAS类型ID,T3.TypeNameAS数据类型,T3.OriginTypeAS数据库数据类型,T3.iLenAS数据长度FROMtabDIYTableAST2LEFTJOINtabDIYTableFieldAST1ONT1.tabID=T2.tabIDLEFTJOINtabDataTypeAST3ONT3.TypeID=T1.TypeID