Appearance
告别拖拉拽:我如何指挥 AI,将一个 Tableau 看板完整“翻译”为 Power BI 源码
前言:当 BI 开发遇上“代码时代”
在商业智能(BI)领域,我们早已习惯了通过图形化界面(GUI)拖拽字段、调整格式来构建仪表板。这种方式直观易用,但当面临复杂的报表迁移、批量修改或版本控制时,其“手工作坊”式的弊端便暴露无遗。
但是,随着 Power BI 推出 .pbip
项目格式,一切都变得不同了。它将报表的定义、数据模型、布局等所有元素,都以人类可读的文本文件(如 JSON, TMDL)形式存储。这为我们打开了一扇全新的大门——“BI 即代码” (BI as Code)。
在这篇文章中,我将完整复盘一次前沿实验:在不写一行 Power BI 代码的前提下,我如何通过与 AI 编程助手对话,指挥它将一个功能完善的 Tableau 看板,完美迁移为 Power BI 报表。
这不仅是一次从 A 工具到 B 工具的简单复刻,更是一场关于未来 BI 开发模式的深度探索。
第一章:我们的目标与工具
1.1 迁移目标
我们的任务是将一个经典的 Tableau "Superstore" 销售看板,迁移到 Power BI 中。
原始 Tableau 看板:
最终 Power BI 成果:
这个看板看似简单,但五脏俱全,涵盖了 BI 看板的核心元素:
- KPI 指标卡:7 个核心业务指标。
- 地理可视化:按州/省展示销售额和利润率的气泡地图。
- 时间序列分析:两个按月度展示销售趋势的面积图。
- 交互式筛选器:四个不同维度的切片器。
1.2 核心工具
- AI 编程助手:Claude Code
- Power BI Project (
.pbip
):我们的“画布”,它允许我们通过修改源代码来定义报表的一切。
第二章:人机协作的四幕剧
整个过程就像一出四幕剧,充满了规划、尝试、挫折和最终的成功。
第一幕:需求分析与 AI 的蓝图
一切始于一个清晰的指令。我将 Tableau 的源文件、截图和数据一并交给 AI,并提出了我的要求。AI 的第一步并非盲目编码,而是像一个资深项目经理一样,先输出了一份详尽的行动计划。
👤 我: “参考这个 Tableau 看板和截图,用给定的数据源,修改 Power BI 项目文件,新建一页看板,完全复刻 Tableau 的内容。先告诉我你的计划。”
🤖 AI: “完美!现在让我制定详细计划:
第一阶段:分析和准备
- 分析 Tableau 看板结构(从截图和
.twb
文件):
- ✅ 顶部标题:"Profitability Overview"
- ✅ 7个KPI卡片:Sales, Profit, Profit Ratio...
- ✅ 地图:按邮政编码显示 Profit Ratio(颜色),Sales(大小)
- ✅ 左下:Monthly Sales by Segment(面积图)
- ✅ 右下:Monthly Sales by Product Category(面积图)
- ✅ 右侧筛选器:Order Date, Region, State/Province...
第二阶段:创建新页面 3. 在 Report 中新建页面 "Profitability Overview"...
第三阶段:添加可视化组件 4. 添加 7 个 KPI 卡片... 5. 添加地图可视化... ...
第四阶段:样式和格式化 9. 应用字体、颜色方案等...”
复盘思考: 这一步至关重要。让 AI 先出计划,确保了它完全理解了我的意图,避免了后续大量的返工。AI 的结构化思维能力在这里体现得淋漓尽致。
第二幕:初次尝试与“创造性的失败”
AI 根据计划,开始生成定义页面布局的 page.json
文件。它自信地将所有可视化组件的定义都写在了 visualContainers
属性里。然而,当我尝试在 Power BI Desktop 中打开时,立刻收到了一个 Schema 验证错误。
这是整个过程中最关键的转折点,真正的人机协作开始了。
👤 我: “有报错:'pages/ProfitabilityOverview/page.json': Property 'visualContainers' has not been defined and the schema does not allow additional properties...”
🤖 AI: “我明白了,看来 Power BI 的
page.json
schema 不支持直接在内部定义visualContainers
。让我检查一下正确的结构... 原来如此!可视化组件需要放在独立的子文件夹中,每个组件都有自己的visual.json
文件。 让我研究一下你提供的另一个范例项目Retail Analysis Sample
,学习正确的格式。”
复盘思考: AI 犯错了,但这并非失败。错误信息成为了最宝贵的“提示词”。我扮演的角色不是编码者,而是测试者和反馈者。AI 则展现了强大的学习和纠错能力,它能通过分析错误和学习范例,迅速掌握正确的开发范式。
第三幕:学习、适应与精确执行
在理解了正确的 .pbip
结构后,AI 的工作模式发生了根本性的改变。它不再生成一个大而全的 page.json
,而是开始像一个严谨的工程师一样,按部就班地创建目录和文件。
🤖 AI: “好的,我已经理解了正确的结构。现在,我将为每个可视化组件创建独立的文件夹和
visual.json
文件。首先创建第一个 KPI 卡片(Sales):”
> Bash(mkdir -p ".../visuals/CardSales")
> Write(.../visuals/CardSales/visual.json)
json{ "$schema": "[https://developer.microsoft.com/json-schemas/fabric/item/report/definition/visualContainer/2.3.0/schema.json](https://developer.microsoft.com/json-schemas/fabric/item/report/definition/visualContainer/2.3.0/schema.json)", "name": "CardSales", "position": { "x": 10, "y": 60, "z": 1001, "height": 70, "width": 145 }, "visual": { "visualType": "card", "query": { "queryState": { "Values": { "projections": [ { "queryRef": "Orders.Total Sales" } ] } } } } }
“完美!现在创建第2个卡片 - Profit...”
这个过程被重复了 13 次,AI 精确地为 7 个 KPI 卡片、2 个面积图和 4 个筛选器分别创建了配置文件,并严格遵守了第一步规划好的坐标和尺寸。
第四幕:攻克难关与完美收官
当创建面积图时,我们遇到了最后一个难题:Tableau 看板是按“月”聚合数据的,而 AI 最初生成的图表是按“天”展示的。AI 最初尝试使用 Power BI 的内置日期层次结构,但再次遇到了 Schema 错误。
这一次,它展现了更高阶的解决问题的能力:修改数据模型。
🤖 AI: “我明白了,直接引用日期层级的方式在当前 Schema 下行不通。最稳妥的方案是,在数据模型中创建一个新的计算列,专门用于表示年月。让我来修改
Orders.tmdl
文件。”
> Update(superstore dashboard.SemanticModel\definition\tables\Orders.tmdl)
daxcolumn 'Order Year-Month' = FORMAT(Orders[Order Date], "YYYY-MM") dataType: string lineageTag: c-order-year-month-001 summarizeBy: none dataCategory: Months
“很好!现在我已经添加了新的计算列。接下来,我将更新两个面积图的
visual.json
文件,让它们的X轴使用这个新的Order Year-Month
列。”
最终,AI 成功地修改了数据模型(添加 DAX 计算列)和报表定义,完美实现了按月聚合的功能。至此,整个看板的迁移工作宣告完成。
第三章:复盘与展望
这次实验给我的震撼是巨大的,它预示着 BI 开发的一种全新可能。
1. 关键收获
- 开发者的角色转变:我的角色从一个“执行者”(报表开发)转变为一个“指挥官”(提出需求、提供反馈、验证结果)。我负责定义“做什么”,而 AI 负责“怎么做”。
- AI 是伙伴,而非工具:AI 不再是被动执行命令的工具。它能够规划、学习、试错、纠错,成为了一个真正的开发伙伴。我们之间的交互是双向的、富有成效的对话。
- “BI 即代码”的威力:通过操作pbip的代码,我们获得了前所未有的精确性、可复用性和自动化潜力。想象一下,未来我们可以用脚本批量生成上百个风格统一、布局一致的报表,这将是效率的巨大飞跃。
2. 未来的展望
我们正站在 BI 开发新纪元的门口。随着 AI 能力的不断增强和 Power BI 开发工具链的日益成熟,我们可以预见:
- 高度自动化的 BI 运维:通过 Git 进行版本控制,通过 CI/CD 流水线实现报表的自动化测试和部署将成为常态。
- 自然语言驱动的开发:未来,我们可能只需要用一句话描述想要的报表,AI 就能为我们生成完整的、可交互的
.pbip
项目。 - 技能要求的演变:BI 专业人士的价值将更多地体现在业务理解、数据建模、需求定义和 AI 指挥能力上,而非单纯的工具操作熟练度。
如果你也对这场正在发生的变革感到兴奋,不妨现在就打开一个 .pbip
项目,尝试用代码去“绘制”你的下一个数据故事吧!