
在大型项目交付中,向客户解释动辄嵌套十层的仪表板布局,以及背后错综复杂的数据关系,往往极其耗时且容易出现沟通偏差。
基于这个需求,我使用 (React 和 TypeScript) AI 开发了一款 Tableau 仪表板解析工具。核心目的就是通过自动化解析,让 Tableau 的内部结构绝对透明。

Tableau 的.twb文件本质上是一个结构复杂的 XML 文件。通过工具中的解析模块(xmlParser.ts和tableauParser.ts),程序会自动读取并转换这棵 XML 树。比如一个工作表的xml如下:
<worksheets>
<worksheet name='1.1a销售主题指标卡'>
<layout-options>
<title>
<formatted-text>
<run>销售达成</run>
</formatted-text>
</title>
</layout-options>
<table>
<view>
<datasources>
<datasource caption='MStest_T_IMS_A_IMS' name='federated.1ftcjrc010gbck1csm22g0mcjtt8' />
<datasource caption='target-L2' name='federated.1y8raoa1mjcw681fctkfl1qk5mch' />
<datasource caption='参数' name='Parameters' />
</datasources>同样的,<dashboards> 节点包含了水平、垂直等布局对象及其设置,都可以被AI快速学习。基于此,就可以反向解析,摒弃内容本身聚集布局(layout)部分。
只需要精准提取和内部各个标签的属性,包括类型(水平、垂直容器或工作表)、坐标(x, y)、尺寸(宽度、高度)以及内边距(padding)。
之后将原本机器友好的扁平 XML 代码,重新构建为符合人类直觉的层级嵌套对象,为后续的可视化奠定事实基础。
解析出坐标后,工具会生成一个与实际仪表板尺寸完全一致的线框图(Layout Visualizer)。比如,我近期的一个项目仪表板解析如下:

在这里,不同的容器类型(如 layout-flow、layout-vertical)被渲染为不同颜色的区块,所有嵌套关系一目了然。
相比于死板的截图,工具支持将整个结构直接导出为Excalidraw JSON文件(Excalidraw+是我2025年开始付费的订阅软件之一)。交付时,可以直接将这份文件导入在线白板,与客户在上面拖拽、修改、批注,极大地降低了需求对齐的沟通成本。
我近期给一家企业修改仪表板,我随手解析了一下,导入了Excalidraw。

这个让人崩溃的布局,每个小格子都是一个对象,我计划把它简化4/5,更高性能、更轻量。
同时,我还需要和客户确认数据模型,毕竟数据口径的准确性是业务分析的生命线。
工具的DataModelViewer模块会自动提取隐藏在文件中的数据层信息,绘制出类似 ER 图的数据模型。
比如,我近期的一个项目模型是这样的,我可以轻松地和客户沟通模型细节啦。(我计划后期增加基数UML样式,增加数据表详细级别(如有主键))

在很多项目中,我开始大量使用SQL简化逻辑复杂性。为此,我需要自动提取并高亮显示隐藏在数据源中的自定义 SQL(Custom SQL)代码。在与客户核对业务口径时,可以直接对着这份清单确认底层取数逻辑,避免了反复打开 Tableau 软件查看配置的麻烦。



在涉及企业数据的项目中,安全性是第一前提。
这个工具是我借助 Google AI Studio 编写的。通过大约 20+ 轮的对话与不断迭代,完成了目前的版本,它验证了“业务人员结合 AI 独立完成产品级工程”的可行性。
目前的作品还有很多改进空间。在后续完善后,我会将其开发为一个 WordPress 插件并部署到我的博客(vizwise.cn)上,供大家免费使用。
- Github:https://github.com/tableau-China/Tableau-Layout-Visualizer
- 在线尝试:https://tableau-layout-visualizer-670417498413.us-west1.run.app/ (科学上网)
致敬 Tableau Visionary Hall of Fame 的最好方式,是持续产出有价值的专业内容。今年,我的分享计划将围绕以下三点展开:
技术只是手段,解决业务问题才是结果。希望这个小工具和今年的内容,能为你的数据工作带来直接的影响和帮助。
