每周一早上,你可能都在做同一套动作:从业务系统导出销售明细 → 粘进 Excel → 刷新透视表 → 调好透视图的格式 → 另存一份副本 → 邮件发出去。到了下周一,数据一换,这套动作原封不动再来一遍。

这套流程本身没有错,问题在于它绑在人身上:人不在、人忘了、人有别的事,报表就是旧的。

Power BI 要解决的核心问题,就是把这套“每次手动做一遍的动作”,改写成一条“写一次、以后自动跑”的流程。它并不会让你的分析变得更聪明,它把你从重复劳动里挪出来。

先看清 Excel 透视表的能力边界

透视表做的事很具体:把一张明细表按行、列、值、筛选器四个位置重新摆一遍,每个交叉格子给出一个汇总。它快、直观、贴着手边的数据,是探索性分析最好的工具之一。

三处限制会在“这份报表要长期、反复地给别人看”时暴露出来。

第一,分析范围通常只在一张表里。想按客户行业看销售额,而行业字段在另一张客户表里,你就得先 VLOOKUP 拼一张大表。

第二,数据变新靠人触发。数据存在于文件内部,文件不打开、不点刷新,格子里的数字就停留在上次的状态。

第三,分发靠副本。给十个人发,就有十个版本的 Excel 文件在流转,谁手上的数字是旧的、谁又偷偷改了公式,没人说得清。

这里要补一句更准确的话:Excel 自己有一个“数据模型”(就是 Power Pivot),它能把多张表按关系连起来、用 DAX 算指标、容纳百万行以上的数据——第一条限制它解决了大部分。但刷新仍然要人打开文件点一下,分发仍然是文件副本。这一点恰恰说明 Power BI 和 Excel 的关系,下一节接着说。

Power BI 和 Excel 是两个形态,不是两套本事

Power BI 的底层技术和 Excel 的数据模型是同一套:连数据、清洗数据用的是 Power Query,建模和算指标用的是和 Power Pivot 同源的引擎。你可以理解成,微软先把这套能力做成了 Excel 里的可选配件,后来觉得它值得有一个独立的产品,就做成了 Power BI。

所以你已经会的透视表思维可以直接搬过来——“维度放行、指标放值、筛选器切范围”这套逻辑没有变。真正的差别有两条。

一条是工作方式。Excel 的基本单位是单元格和公式,你在一张表上手工操作;Power BI 的基本单位是模型和度量值,你先定义“数据之间是什么关系、指标怎么算”,再由报表去引用它们。前者的结果是“这一次算出来的数字”,后者是“以后每次都会这样算的规则”。

另一条是分发方式。Excel 分发的是文件副本,Power BI 分发的是一个链接加一组权限,所有人看的是同一份数据。

Power BI 由三样东西组成

弄明白这三样东西,后面的步骤才不会糊。

Power BI Desktop 是免费的 Windows 客户端。你在这里连接数据、清洗、建模、画图,成果保存成一个 .pbix 文件。这是你的工作台。

Power BI 服务 是云端。你把 Desktop 的文件“发布”(Publish)上去,它就变成在线内容,别人通过浏览器和手机 App 查看。浏览器和手机 App 就是第三样,消费端。

这里有个关键细节,很多人学了很久都没意识到:发布之后,你的一个文件在云上会拆成两样东西。

一样是 语义模型(semantic model,早期文档里叫“数据集”dataset),它负责“数据从哪来、怎么清洗、指标怎么算”。另一样是 报表,它负责“长什么样、有哪些图表和切片器”。

拆开的意义是:多个报表可以接同一个模型,共用一套数据和指标定义;而数据更新只发生在模型身上,报表的定义根本不动。这就是“数据换了、图表不用重做”背后的技术原因。

从原始数据到自动更新:五步

第一步:获取数据。 在 Desktop 里点“获取数据”(Get data),从 Excel 文件、CSV、数据库、SaaS 系统等各种来源连进来。这里要养成一个习惯:连到最原始的那一层。如果连的是别人手工整理过的汇总表,上游一改格式,你的整条流程就断。

第二步:用 Power Query 清洗。 这是整篇文章最该记住的一步,也是自动化真正的机制所在。

你在 Power Query 编辑器里做的每一步——删掉没用的列、改数据类型、替换异常值、合并另一张表、追加多个月的明细——都会被记录成一串按顺序排列的 步骤(右侧“应用的步骤”面板里那些名字)。它不是一次性改在你的数据上,而是一份操作说明书。

点刷新的时候,Power BI 会拿着这份说明书,从第一步开始 完整重放一遍。

由此可以推出一条很实用的判断标准:你做每个动作时都问自己,我这是在“改这一次的结果”,还是在“定义一条每次都要执行的规则”?只有后者在自动化流程里有位置。任何手工改动——把几个错误值直接敲成对的、在表格旁边另加一列辅助公式——都会在下次刷新时消失得无影无踪。

第三步:建模。 把多张表之间的关系(relationship)建立起来,通常是一个“一对多”:一张客户表对应多行销售记录。再把要反复使用的指标写成 度量值(measure,用 DAX 语言写)。透视表里“值区域放什么”的位置,在这里由度量值承担,但它是可复用、可命名、层次更丰富的。度量值具体怎么写值得单独讲,这里先按下。

第四步:画报表页。 把字段拖到画布上,选图表类型,加切片器和其他图表做交叉筛选,排版。这一步最容易上手,但它只是整条流水线的出口,不是全部。

第五步:发布并设置计划刷新。 点“发布”,把文件送到 Power BI 服务里,然后找到 语义模型(注意,是模型,不是那个同名的报表——报表的设置里没有“计划刷新”这一项,很多人在这里找半天),打开刷新开关,选频率和时间点,再勾上“刷新失败时通知我”。

Power BI 服务里语义模型的计划刷新设置界面

之后每次到点,云端会按顺序做三件事:重新执行 Power Query 的全部步骤 → 把新结果装进模型 → 所有引用这个模型的报表自动读到新数字。你电脑关着、你人在休假,都不影响。

绘制中

自动更新的三条边界

上面说的“自动”不是无限的,有三条边界值得一开始就知道,能省掉很多困惑。

一、导入模式是一份快照。 Power BI 最常用的模式叫导入(Import):它把数据真的复制一份存进模型里。所以你看到的永远是“上次刷新的那一刻”的数据,不是实时的。刷新时间隔多久,数据新鲜度就是多久。

二、刷新频率和时长有上限。 语义模型放在共享容量上(对应 Power BI Pro 许可)时,每天最多 8 次 计划刷新;放在 Premium、PPU 或 Fabric 容量上,上限是 48 次。另外在共享容量上,单次刷新必须在 2 小时 内跑完,超了就会失败。这几个数字决定了“每天早八点更新一次”和“每小时更新一次”不是同一种诉求。

三、数据源在内网就需要网关。 云端服务访问不到你公司内网的数据库或文件服务器。解决办法是在内网一台常开的机器上装 网关(gateway),它作为桥梁,云端刷新时通过它去取数据。网关里的服务器名、数据库名必须和你在 Desktop 里填的完全一致,配置不匹配是刷新失败最常见的原因之一。

如果你的需求确实需要接近实时,还有另一条路叫 DirectQuery:不复制数据,每次打开图表就直接去源数据库查,因此压根不需要计划刷新。代价是清洗步骤必须能“下推”成源数据库看得懂的原生查询,DAX 也受限制(比如不能用计算表)。新手阶段先不用管它,把导入这条路跑通再说。

那 Excel 还要不要用

要。手工录入、场景测算、一次性探索、需要精确控制单元格排版的报告,Excel 依然更合适。而且它还有一个很实用的用法:通过“分析 Excel 中的 Power BI 数据集”,Excel 里的透视表可以直接连到已发布的语义模型,看的是同一份受管控的数据,不用你手动贴数据。

大致的分界线是:这件事会不会重复做、要不要给一组人看、数据会不会持续更新。三个答案里有两个是“会”,就值得做成 Power BI;只是自己这一次想看看数,Excel 更快。

记住这条主线

Power BI 和 Excel 透视表不是替代关系,是同一个思路的两种形态。透视表让你手动完成一次分析;Power BI 让你把这次分析写成一条流水线:连到源头 → 定义清洗规则 → 建模型 → 画报表 → 定时刷新。

所以学 Power BI,重点不在“学会用哪个图表”,而在于养成一个习惯:每做一步都问一句,我是在做这一次,还是在定规则。