工业工程

工业工程

首页
专业认知
课程体系
方法与工具
软件技能
就业发展
考研深造
院校学科
行业洞察
关于
考研倒计时
注册
工业工程

工业工程

首页 专业认知 课程体系 方法与工具 软件技能 就业发展 考研深造 院校学科 行业洞察 关于 考研倒计时 注册
  1. 首页
  2. 软件技能
  3. Power BI 工业工程看板实战:从数据到管理驾驶舱

Power BI 工业工程看板实战:从数据到管理驾驶舱

0
  • 软件技能
  • 发布于 2026-01-10
  • 23 次阅读
伴读书童
伴读书童
目录
当前文章没有目录

Power BI 工业工程看板实战:从数据到管理驾驶舱

引言:看板不是为了好看,是为了少开会

先说一个真实观察。

某工厂每天早上 8:30 开生产例会,参会者 12 人,平均时长 45 分钟。会议内容的前 25 分钟,几乎全部花在"对数字"上:

  • "昨天产量是 4820 还是 4790?"
  • "我这边系统显示 4805,可能是报工延迟。"
  • "停机时间算不算换型?上个月说不算的。"
  • "设备部统计的停机是 4 小时,生产部是 6 小时。"

真正讨论"怎么办"的时间,只剩下 20 分钟。

这类问题的根源不是人不认真,而是没有一个所有人都认可的、实时的数据源。

一个合格的管理看板,能把这 25 分钟砍掉。前提是它满足三个条件:

  1. 口径唯一:所有人看到的是同一个数字,定义写在哪里都查得到
  2. 自动更新:不需要人工导出导入,早上打开就是最新的
  3. 能下钻:看到异常能一路点下去,看到工单级、设备级的明细

Power BI 是目前做这件事性价比最高的工具。它免费(Desktop 版)、与 Excel 生态无缝、能连几乎所有数据源、学习曲线平缓。

本文讲的就是:怎么用 Power BI 把工厂的数据变成管理驾驶舱。


一、什么时候该用 Power BI,什么时候不该

1.1 先泼一盆冷水

Power BI 不是万能的。以下场景不该用:

场景 为什么不适合 该用什么
实时秒级监控(如设备实时状态) Power BI 刷新最快 15 分钟一次(Premium 可到秒级但昂贵) SCADA、组态软件、MES 自带监控
复杂的统计分析(回归、DOE、SPC 判异) DAX 不适合做统计推断 Minitab、Python/R
大规模仿真/优化 不是它的领域 FlexSim、专业优化器
需要写入数据(回填、审批) Power BI 是只读分析工具 Power Apps、MES 本身
一次性临时分析 建模型的时间超过省下的时间 Excel
数据量超大(亿行以上)且需要明细 需要 Premium 容量 数据仓库 + 专业 BI

1.2 适合用 Power BI 的场景

场景 说明
日常 KPI 监控 OEE、产量、良率、交付、库存,按日/周/月看趋势
管理驾驶舱 给厂长/总监的一页式总览
多源数据整合 ERP + MES + Excel 手工表,统一到一个模型
替代人工报表 每周/每月手工做的 Excel 报表,自动化
自助分析 让生产主管自己拖拖拽拽查数据,不用找 IT
异常预警 指标超阈值时高亮、发邮件提醒

判断标准:如果一个报表每月要做一次以上,且每次都要重新导数据、刷新透视表,那就该用 Power BI 自动化。

1.3 与竞品对比

工具 厂商 优势 劣势 价格
Power BI 微软 免费 Desktop、Excel 生态无缝、价格低、DAX 强大 大数据量需付费容量 Desktop 免费;Pro 约 ¥70/用户/月;Premium 更高
Tableau Salesforce 可视化最强、交互体验好 贵、中文生态弱 较高
FineBI / 帆软 国产帆软 国产化、本地部署、与 FineReport 打通、中文支持好 生态不如 PBI 按项目/用户授权
Quick BI 阿里 云上、与阿里云打通 依赖阿里云 订阅
Metabase / Superset 开源 免费、可自部署 功能较弱、需要运维 免费
Excel 透视表 微软 人人会用 不可复用、数据量大卡 已有 Office

国内制造业的现实选择:如果企业已用 Office 365,Power BI 是最顺的。如果用国产化要求(信创),帆软 FineBI 是主流。两者概念相通,学会一个转另一个不难。


二、整体工作流

① 数据源(SQL / Excel / ERP / MES / Web API)
        ↓
② Power Query(数据获取与清洗)
   - 连接、筛选、改类型、合并、拆分、透视/逆透视
        ↓
③ 数据建模(表关系、星型模型)
        ↓
④ DAX(度量值:业务指标的计算逻辑)
        ↓
⑤ 可视化(图表、切片器、交互)
        ↓
⑥ 发布与刷新(Gateway 定时刷新)
        ↓
⑦ 权限与共享(行级安全 RLS)

时间分配的经验法则:一个 Power BI 项目里,

  • 数据准备(Power Query)占 50%
  • 建模 + DAX 占 25%
  • 可视化占 20%
  • 发布运维占 5%

新手往往把 80% 时间花在画图上,这是本末倒置。如果数据模型建对了,图表半小时就能改好;模型建错了,图表再美也是错的。


三、Power Query:数据清洗(最花时间的一步)

3.1 核心理念:记录步骤,可重复执行

Power Query 的每一步操作都会记录在"应用的步骤"面板里,形成可重复执行的 ETL(抽取-转换-加载)流程。下次刷新,所有步骤自动重跑。

这是它相对 Excel 手工操作的根本优势:一次配置,永久复用。

3.2 十类常用操作

操作 用途 位置
筛选行 去掉不需要的数据(如测试订单、已取消) 开始 → 减少行
删除列 只保留需要的字段(重要:减少模型体积) 开始 → 管理列
更改类型 把文本转成数字/日期 转换 → 数据类型
替换值 修正脏数据(如"N/A" → null) 转换 → 替换值
拆分列 一个字段拆成多个(如"A001-红色" 拆成编码和颜色) 转换 → 拆分列
合并列 多个字段合并 转换 → 合并列
合并查询 类似 SQL 的 JOIN 开始 → 合并查询
追加查询 类似 SQL 的 UNION(纵向拼接,如多个月份的表) 开始 → 追加查询
逆透视 宽表转长表(关键!见下) 转换 → 逆透视列
分组依据 聚合(类似 GROUP BY) 转换 → 分组依据

3.3 逆透视:宽表转长表

这是 BI 建模中最重要的一个操作。

问题:业务人员习惯的 Excel 表格长这样(宽表):

产线 1月产量 2月产量 3月产量
A线 1200 1350 1280
B线 980 1020 1100

这种格式人看着舒服,但 BI 分析不了——因为"月份"是列名,无法作为筛选维度。

逆透视后(长表):

产线 月份 产量
A线 1月 1200
A线 2月 1350
A线 3月 1280
B线 1月 980
… … …

长表可以被任意维度(产线、月份)切片,这才是 BI 需要的结构。

操作:选中要转换的列(1月、2月、3月)→ 转换 → 逆透视列 → 自动生成"属性"(月份)和"值"(产量)两列 → 重命名为"月份"和"产量"。

判断标准:如果你发现表格里有多个"看起来是同一类指标"的列(如多个月份、多个产品、多个工序),几乎都需要逆透视。

3.4 日期表(必建)

几乎所有时间智能分析都依赖一张独立的日期表(Calendar / Date Dimension)。

Power BI 不要求你建,但没有日期表,时间智能函数(同比、环比、累计、移动平均)全部失效。

用 DAX 建日期表:

日期表 =
VAR MinDate = DATE(2023, 1, 1)
VAR MaxDate = DATE(2027, 12, 31)
RETURN
ADDCOLUMNS(
    CALENDAR(MinDate, MaxDate),
    "年",           YEAR([Date]),
    "季度",         QUARTER([Date]),
    "月",           MONTH([Date]),
    "年月",         FORMAT([Date], "YYYY-MM"),
    "年月排序",     YEAR([Date]) * 100 + MONTH([Date]),
    "日",           DAY([Date]),
    "星期几",       WEEKDAY([Date], 2),      -- 2 = 周一开始
    "星期名称",     FORMAT([Date], "dddd", "zh-CN"),
    "是否工作日",   IF(WEEKDAY([Date], 2) <= 5, 1, 0),
    "周序号",       WEEKNUM([Date], 2),
    "年周",         YEAR([Date]) & "-W" & FORMAT(WEEKNUM([Date], 2), "00")
)

建完必做三件事:

  1. 标记为日期表(表工具 → 标记为日期表)
  2. 与事实表建立关系(日期表[Date] → 事实表[日期])
  3. 给"年月"、"星期名称"等文本列设置排序列(列工具 → 按列排序 → 选"年月排序"),否则月份会按拼音排序("1月, 10月, 11月, 12月, 2月…")

第 3 点是最常见的低级错误,几乎每个新手都踩过。

3.5 数据清洗的性能原则

原则 说明
尽早筛选 在数据源阶段(SQL 查询里)就过滤,不要在 Power BI 里拉全表再筛
删除无用列 每多一列,模型体积和内存都增加
在数据源做聚合 如果需要月度数据,在 SQL 里按天聚合即可,不要拉明细到 BI 里再聚合
避免复杂自定义列 Power Query 的自定义列(M 语言)性能不如 SQL
禁用不必要的加载 中间查询取消勾选"启用加载"

关键判断:如果数据源是 SQL 数据库,尽可能把工作推给 SQL(数据库擅长这个)。Power Query 只负责 SQL 不擅长的部分(合并 Excel、Web 数据、逆透视等)。


四、数据建模:星型模型

4.1 事实表与维度表

类型 内容 特点 例子
事实表(Fact) 业务事件的度量值 行数多、有数值列、有外键 报工记录、停机记录、出入库流水
维度表(Dimension) 描述性的属性 行数少、文本列多 产品表、设备表、产线表、日期表、人员表

4.2 星型模型 vs 雪花模型

星型模型(推荐):
              日期表
                 │
产品表 ─── 报工事实表 ─── 设备表
                 │
              人员表

雪花模型(不推荐):
              日期表
                 │
产品表 ─── 报工事实表 ─── 设备表 ─── 设备类型表
                 │
              人员表 ─── 部门表 ─── 工厂表

Power BI 里推荐星型模型:维度表直接连事实表,不做多级规范化。原因是:

  1. 查询性能更好(减少 JOIN 层数)
  2. 用户更容易理解
  3. Power BI 的引擎(VertiPaq)对星型模型优化最好

4.3 表关系的设置

设置项 说明
基数 一对多(1:*)为默认。维度表在"一"侧,事实表在"多"侧
交叉筛选方向 单向(默认)。双向会导致歧义和性能问题,避免
激活状态 两个表之间只能有一条活动关系。多条关系时,非活动关系需用 USERELATIONSHIP 激活
假设引用完整性 仅 DirectQuery 模式相关

常见关系场景:

场景 做法
事实表有多个日期字段(订单日期、发货日期、完工日期) 建一个日期表,建立多条关系,只有一条激活,其余用 USERELATIONSHIP 按需激活;或建多个"角色扮演"日期表副本
事实表与维度表的关联键有空格/大小写差异 在 Power Query 里用 Text.Trim、Text.Upper 统一
需要按不同粒度关联(如日粒度事实表 + 月粒度预算表) 把月粒度表展开到日粒度,或用 TREATAS

4.4 建模的十个检查项

  • 有独立的日期表,并已"标记为日期表"
  • 日期表与所有事实表建立了关系
  • 所有关系方向正确(维度 → 事实,单向)
  • 没有双向关系(除非明确需要且理解后果)
  • 没有未使用的列(删除)
  • 数值列的数据类型正确(小数/整数/货币)
  • 文本列的"按列排序"已设置(月份、星期、班次)
  • 隐藏了不需要用户直接使用的字段(如 ID、排序辅助列)
  • 度量值组织在文件夹里(建模 → 属性 → 显示文件夹)
  • 表命名清晰(中文或英文统一,不要混合)

五、DAX:业务指标的语言

DAX(Data Analysis Expressions)是 Power BI 的公式语言。它与 Excel 公式形似,但本质不同。

5.1 两个最核心的概念

① 计算列 vs 度量值

计算列(Calculated Column) 度量值(Measure)
计算时机 数据刷新时,逐行计算 查询时,按需计算
存储 占用内存(存一份结果) 不占内存(用时算)
上下文 行上下文(当前行) 筛选上下文(当前筛选条件)
随切片器变化 不变 变
适用 需要作为维度使用的(如"产量区间") 绝大多数业务指标

判断规则:

  • 如果这个值是用来分组/筛选的(如"是否延期"、"产量等级")→ 计算列
  • 如果这个值是用来聚合/展示的(如"总产量"、"平均良率")→ 度量值

新手最常见的错误:把本该是度量值的东西做成计算列。后果是内存爆炸 + 结果不随筛选变化。

② 筛选上下文(Filter Context)

这是 DAX 最难也最关键的概念。

度量值的结果取决于"当前有哪些筛选在起作用"。这些筛选来自:

  • 切片器(如选了"2026年8月")
  • 图表的行/列(如矩阵的行是"产线")
  • 交叉筛选(点击图表 A 的元素,会筛选图表 B)
  • 筛选器面板
  • DAX 内部的 CALCULATE 修改

例如同一个度量值 [总产量],放在矩阵里按产线分行,每行显示的是"该产线在当前日期筛选下的产量"。同一个度量值,在不同位置显示不同的值——这就是筛选上下文。

5.2 基础语法

-- 简单聚合
总产量 = SUM('生产报工'[合格数])

-- 带条件的聚合
合格品数 = CALCULATE(SUM('生产报工'[数量]), '生产报工'[结果] = "合格")

-- 除法(注意防除零)
良率 = DIVIDE([合格品数], [总产量], BLANK())

-- 引用其他度量值(直接写名字,不写表名)
不良率 = 1 - [良率]

DIVIDE() vs /:

  • DIVIDE(a, b) 自动处理除零,返回你指定的默认值
  • a / b 除零会报错(或返回 Infinity)

永远用 DIVIDE。

5.3 CALCULATE:DAX 的灵魂

CALCULATE 是 DAX 中唯一能修改筛选上下文的函数。

CALCULATE( <表达式>, <筛选条件1>, <筛选条件2>, ... )

示例:

-- 只看 A 线的产量(忽略用户选了什么产线)
A线产量 = CALCULATE([总产量], '产线'[产线名称] = "A线")

-- 去年同期的产量
去年同期产量 = CALCULATE([总产量], SAMEPERIODLASTYEAR('日期表'[Date]))

-- 移除所有筛选(计算总计)
全厂产量 = CALCULATE([总产量], ALL('产线'))

-- 占全厂的比例
产量占比 = DIVIDE([总产量], CALCULATE([总产量], ALL('产线')))

筛选条件的写法:

写法 含义
'表'[列] = "值" 筛选该值(会覆盖该列已有的筛选)
ALL('表') 移除该表的所有筛选
ALL('表'[列]) 移除该列的筛选
ALLEXCEPT('表', '表'[列]) 移除除指定列外的所有筛选
ALLSELECTED() 保留切片器筛选,移除图表内部的分组
KEEPFILTERS(条件) 追加筛选而非覆盖
FILTER('表', 条件) 复杂条件(返回表作为筛选器)

5.4 迭代函数(X 函数)

SUMX、AVERAGEX、MAXX、COUNTX、RANKX 等带 X 的函数叫迭代函数,它们逐行计算然后对结果聚合。

-- 错误:先求和,再乘以单价(单价不是逐行的)
总金额 = SUM('订单'[数量]) * SUM('订单'[单价])   -- 错!

-- 正确:逐行计算 数量×单价,再求和
总金额 = SUMX('订单', '订单'[数量] * '订单'[单价])

判断规则:

  • 如果计算是"先聚合再算" → 用普通聚合函数
  • 如果计算是"先逐行算再聚合" → 用 X 函数

典型场景:金额计算、加权平均、按行的条件判断后聚合。

-- 加权平均单位成本
加权平均成本 =
DIVIDE(
    SUMX('库存', '库存'[数量] * '库存'[单位成本]),
    SUM('库存'[数量])
)

5.5 时间智能函数

前提:有正确配置的日期表。

函数 作用
TOTALYTD(expr, dates) 年初至今累计
TOTALQTD / TOTALMTD 季初/月初至今累计
SAMEPERIODLASTYEAR(dates) 去年同期
DATEADD(dates, -1, MONTH) 上一个月
PARALLELPERIOD(dates, -12, MONTH) 12 个月前
DATESINPERIOD(dates, start, n, INTERVAL) 滚动区间
PREVIOUSMONTH / NEXTMONTH 上月/下月
FIRSTDATE / LASTDATE 区间首/末日期

示例:

-- 累计产量(年初至今)
累计产量 = TOTALYTD([总产量], '日期表'[Date])

-- 上月产量
上月产量 = CALCULATE([总产量], PREVIOUSMONTH('日期表'[Date]))

-- 环比增长率
环比 =
VAR Cur = [总产量]
VAR Prev = [上月产量]
RETURN DIVIDE(Cur - Prev, Prev, BLANK())

-- 3 个月移动平均
MA3 =
AVERAGEX(
    DATESINPERIOD('日期表'[Date], MAX('日期表'[Date]), -3, MONTH),
    [总产量]
)

VAR 的使用:VAR 定义变量,让复杂公式可读且避免重复计算。任何超过三行的 DAX 都应该用 VAR。

5.6 十五个生产管理常用度量值

以下是可以直接复制使用的模板(表名按实际替换)。

-- ① 总产量
总产量 = SUM('生产报工'[合格数量])

-- ② 不良数
不良数 = SUM('生产报工'[不良数量])

-- ③ 良率
良率 = DIVIDE([总产量], [总产量] + [不良数], BLANK())

-- ④ 计划达成率
计划达成率 = DIVIDE(SUM('工单'[实际产量]), SUM('工单'[计划产量]), BLANK())

-- ⑤ 准时交付率(OTD)
准时交付率 =
DIVIDE(
    CALCULATE(COUNTROWS('工单'), '工单'[实际完工日] <= '工单'[计划完工日]),
    COUNTROWS('工单'),
    BLANK()
)

-- ⑥ 平均工单周期(天)
平均周期天数 = AVERAGEX('工单', DATEDIFF('工单'[实际开工], '工单'[实际完工], DAY))

-- ⑦ 设备运行时间(分钟)
运行时间 = CALCULATE(SUM('设备状态'[时长分钟]), '设备状态'[状态] = "运行")

-- ⑧ 停机时间(分钟)
停机时间 = CALCULATE(SUM('设备状态'[时长分钟]), '设备状态'[状态] = "故障")

-- ⑨ 时间开动率
时间开动率 =
VAR 负荷时间 = CALCULATE(SUM('设备状态'[时长分钟]), '设备状态'[状态] <> "计划停机")
RETURN DIVIDE([运行时间], 负荷时间, BLANK())

-- ⑩ 性能开动率
性能开动率 =
VAR 理论时间 = SUMX('生产报工', '生产报工'[合格数量] * '生产报工'[标准工时秒]) / 60
RETURN DIVIDE(理论时间, [运行时间], BLANK())

-- ⑪ OEE
OEE = [时间开动率] * [性能开动率] * [良率]

-- ⑫ 平均故障间隔 MTBF(小时)
MTBF_小时 =
VAR 故障次数 = CALCULATE(COUNTROWS('停机记录'), '停机记录'[类别] = "故障")
RETURN DIVIDE([运行时间] / 60, 故障次数, BLANK())

-- ⑬ 平均修复时间 MTTR(分钟)
MTTR_分钟 =
VAR 故障次数 = CALCULATE(COUNTROWS('停机记录'), '停机记录'[类别] = "故障")
RETURN DIVIDE([停机时间], 故障次数, BLANK())

-- ⑭ 在制品数量(WIP)
WIP数量 =
CALCULATE(
    SUM('工单'[计划数量]) - SUM('工单'[已完工数量]),
    '工单'[状态] = "已下达"
)

-- ⑮ 库存周转天数
库存周转天数 =
VAR 平均库存 = AVERAGE('库存快照'[库存金额])
VAR 日均发料 = DIVIDE(SUM('出库记录'[金额]), DISTINCTCOUNT('日期表'[Date]), BLANK())
RETURN DIVIDE(平均库存, 日均发料, BLANK())

5.7 DAX 避坑

坑 表现 解法
用计算列做本该度量值的事 结果不随切片器变化 改用度量值
SUM 一列 0/1 标志 需要的是计数 用 COUNTROWS + FILTER,或 CALCULATE(COUNTROWS(...), 条件)
忘了 DIVIDE 除零报错 用 DIVIDE(a, b, 默认值)
在度量值里引用列不带聚合 报错"无法确定单个值" 加聚合函数(SUM/MAX/…)或 SELECTEDVALUE
ALL() 移除了不该移除的筛选 小计不等于明细之和 明确 ALL(具体列) 而不是 ALL(表)
双向关系导致歧义 数字莫名翻倍或错误 改回单向;用 CROSSFILTER 临时启用
时间智能函数失效 返回空或错误 检查日期表是否"标记为日期表"、关系是否建立

六、可视化:图表选择与避坑

6.1 图表选择决策

你想表达 图表 说明
单个数值(如本月 OEE) 卡片图(Card) / KPI 大数字 + 目标对比
趋势(随时间变化) 折线图 时间序列首选
分类对比(各产线产量) 条形图 / 柱状图 分类名长用条形图
构成/占比 堆叠条形图 / 树状图 / 饼图 分类 ≤ 5 才用饼图
主次排序(帕累托) 柱线组合图(柱=数量,线=累计%) 质量分析必备
两个变量的关系 散点图 看相关性、找异常
分布 直方图(需先分箱) 看分布形状
进度 仪表盘 / KPI 对目标
明细 表格 / 矩阵 需要看具体数值
地理分布 地图 多工厂/多仓库
多指标对比 雷达图 能力评估
流程/转化 漏斗图 直通率分析

6.2 必须避免的图表

图表 问题 替代
3D 图表 透视导致数值读取错误 2D 图表
双 Y 轴(量纲不同) 两条线的关系可以随意操纵(改刻度就能让它们"相关") 分成两个图,或改用组合图+明确标注
超过 5 类的饼图 无法比较小的扇区 条形图,或用"其他"合并
彩虹配色 无意义、难读、色盲不友好 单色渐变或分类色板
只有图表没有标题/单位 不知道在看什么 加标题、轴标签、单位
纵轴不从 0 开始的柱状图 夸大差异 从 0 开始(折线图可以从非 0 开始)

6.3 IE 看板的常用视觉

OEE 看板必备元素

┌─────────────────────────────────────────────────┐
│  产线: [全部▾]   日期: [2026-08▾]   班次: [全部▾]  │  ← 切片器区
├─────────────────────────────────────────────────┤
│  ┌────────┬────────┬────────┬────────┐          │
│  │  OEE   │ 时间开动 │ 性能开动 │ 合格品率 │          │  ← KPI 卡片区
│  │ 72.3%  │ 85.1%  │ 89.2%  │ 95.3%  │          │
│  │ ▼2.1pt │        │        │        │          │
│  └────────┴────────┴────────┴────────┘          │
├─────────────────────────────────────────────────┤
│  OEE 趋势(近 30 天折线,含目标线 85%)            │  ← 趋势区
├──────────────────┬──────────────────────────────┤
│  停机帕累托图     │  各设备 OEE 对比(条形)        │  ← 分析区
├──────────────────┴──────────────────────────────┤
│  工单明细表(可下钻)                              │  ← 明细区
└─────────────────────────────────────────────────┘

设计逻辑:从总览 → 趋势 → 归因 → 明细,符合"发现问题 → 分析原因 → 定位到具体对象"的思考路径。

6.4 配色与格式

原则 做法
统一配色 用主题色(视图 → 主题),全报告一致
语义色 红 = 异常/下降,绿 = 正常/达标(注意中国股市红涨绿跌的反向习惯不适用于管理看板,管理看板用"红=坏"的国际惯例)
少即是多 一个图表一个信息,不要堆砌
对齐 用网格辅助,元素对齐
留白 不要塞满,留 20% 空白
字号 标题 14-16pt,正文 10-12pt,大数字 28-40pt
数字格式 统一小数位(比率 1 位,金额 0 位,数量 0 位)
单位 明确写出(%、件、分钟、万元)

6.5 交互设计

功能 用途 设置
交叉筛选 点一个图,其他图跟着变 格式 → 编辑交互
下钻 年 → 季 → 月 → 日 在图表的字段里放层级
钻取页 点击跳转到明细页 右键页 → 钻取
工具提示 悬停显示更多信息 建工具提示页
书签 保存视图状态 视图 → 书签
按钮与导航 页面切换 插入 → 按钮
切片器 筛选 插入 → 切片器

"编辑交互" 是做出专业看板的关键:默认所有视觉对象互相筛选,但有时你不希望某个卡片被筛选(比如"全厂总计"应该固定),就要手动设为"无"。


七、发布、刷新与权限

7.1 发布流程

Power BI Desktop(本地开发)
        ↓ 发布
Power BI Service(云端,app.powerbi.com)
        ↓ 配置网关
定时自动刷新
        ↓ 共享
用户通过各种终端(网页 / 手机 App / Teams)查看

7.2 网关(Gateway)

问题:Power BI Service 在云端,数据库在内网,云端连不上内网数据库。

解法:在内网一台常开的机器上安装 Power BI Gateway(数据网关),它主动连接云端,建立通道。

配置要点:

  • 网关机器必须常开(一般是服务器,不是普通办公电脑)
  • 用专用服务账号,不要用个人账号(人员离职会导致失效)
  • 在 Power BI Service 的"数据集 → 设置 → 网关"里关联
  • 数据源凭据需要重新输入一次

7.3 刷新计划

版本 每日刷新次数
Pro(每用户) 8 次/天
Premium(容量) 48 次/天
Premium Per User 48 次/天

设定刷新时间的原则:

  • 在数据更新完成之后(如夜班结束 + 数据同步完成 → 早上 7:00 刷新)
  • 避开业务高峰
  • 多次刷新错开

增量刷新:如果数据量很大,可以配置增量刷新(只刷新最近 N 天),需要 Premium 或 PPU。

7.4 行级安全(RLS)

场景:各车间主任只能看自己车间的数据。

做法:

  1. 建模 → 管理角色 → 新建角色(如"车间主任")
  2. 给角色设置筛选规则(DAX 表达式):
    -- 只能看自己车间的数据
    '产线'[车间代码] = LOOKUPVALUE(
        '用户权限表'[车间代码],
        '用户权限表'[账号], USERPRINCIPALNAME()
    )
    
  3. 在 Power BI Service 里把用户加到对应角色

关键点:需要一张"用户权限表",记录每个账号能看哪些数据。这张表可以维护在 Excel 里(放在 SharePoint)或数据库里。

7.5 共享方式

方式 说明 适用
工作区(Workspace) 协作开发,成员都能编辑 内部团队
应用(App) 打包发布,用户只读 正式分发给用户(推荐)
共享单个报表 直接分享链接 临时
发布到 Web 公开链接 禁止!数据会公开到互联网
嵌入 嵌入到 SharePoint / Teams / 内网系统 集成
导出 PDF / PPT / Excel 静态汇报

安全提醒:"发布到 Web"会生成公开可访问的链接,任何人都可以通过搜索引擎找到。制造业的生产数据绝对不能这么做。


八、看板设计的七个原则

原则 1:一屏一决策

每个页面回答一个明确的问题:

页面 回答的问题 使用者
总览 整体健康吗? 厂长 / 总监
产量 达成计划了吗? 生产经理
质量 良率如何?主要不良是什么? 质量经理
设备 设备可用吗?停机原因? 设备经理
交付 订单准时吗?哪些有风险? 计划 / 销售
明细 具体是哪些工单/设备? 一线主管

不要试图在一个页面里放所有信息。 一张塞满 20 个图表的页面,等于没有页面。

原则 2:金字塔结构

上层:结论(KPI 卡片,是否达标)
中层:趋势(是偶发还是持续)
下层:归因(是什么导致的)
底层:明细(具体是哪些对象)

用户的视线从上往下,思维也是从"有没有问题"到"怎么办"。

原则 3:异常优先

看板的价值在于让用户立刻看到异常,而不是展示一堆正常数据。

做法:

  • 用条件格式(红色高亮低于目标的)
  • 用 KPI 视觉对象(显示与目标/上期的差异)
  • 用排名(只显示最差的 Top 5)
  • 设置警报(Power BI 可以在指标超阈值时发邮件)

原则 4:目标可见

没有对比就没有判断。"OEE = 72%" 是好是坏?不知道。但"OEE = 72%,目标 85%,低于目标 13 个百分点"就一目了然。

每个 KPI 都应该有目标线。目标可以来自:

  • 历史最好水平
  • 行业标杆
  • 年度预算
  • 理论值

原则 5:口径透明

看板上每个指标都应该能查到定义。做法:

  • 在报告里加一个"指标定义"页面,写清楚每个指标的计算公式和数据源
  • 用工具提示(Tooltip)显示简要说明
  • 在指标名称旁加信息图标

这一条决定了看板能否被信任。 如果有人质疑"这个数字怎么算的",你必须能立刻指出定义在哪里。

原则 6:口径统一

在看板上线前,必须让相关部门对指标定义达成一致并签字。

典型争议点:

  • 良率:一次通过率 vs 最终良率 vs 直通率
  • 停机:是否含计划停机、是否含换型
  • 产量:报工数量 vs 入库数量 vs 合格数
  • 时间:自然日 vs 工作日
  • 交付:按订单行 vs 按订单

建议:在指标定义页写明"本看板的良率 = 一次检验合格数 / 检验总数,不含返工后合格"。

原则 7:移动端适配

很多主管是在手机上看的。Power BI Desktop 支持移动布局视图(视图 → 移动布局),可以把视觉对象拖成手机版的单列布局。

不做移动端适配的报告,在手机上打开会是一堆挤在一起的小图,基本不可用。


九、落地案例:OEE 管理驾驶舱

9.1 需求

某汽车零部件厂,3 个车间、12 条产线、200+ 台设备。需求:

  • 厂长:一屏看到全厂 OEE 及趋势,能下钻到车间、产线
  • 车间主任:看本车间的 OEE 三因子分解和停机帕累托
  • 设备工程师:看单台设备的停机记录明细、MTBF/MTTR

9.2 数据源

源 内容 连接方式 刷新
MES 数据库(SQL Server) 设备状态记录、工单、报工 直连(自定义 SQL 查询) 每 2 小时
ERP 数据库 产品、BOM、标准工时 直连 每天
Excel(SharePoint) 目标值、班次定义、节假日 OneDrive for Business 每天
手工 Excel 停机原因归类(初期) SharePoint 按需

9.3 数据模型

日期表 ──┬── 设备状态事实表(equip_code, status, start, end, duration_min)
         └── 报工事实表(wo_no, equip_code, good_qty, defect_qty, report_time)
         └── 停机记录表(equip_code, start, end, reason_code, duration_min)

设备维度表(equip_code, equip_name, line_code, wc_code, model)──┐
产线维度表(line_code, line_name, workshop, target_oee)          ├── 各事实表
原因代码表(reason_code, reason_name, category)                  │
产品维度表(product_code, product_name, std_time_sec)────────────┘

9.4 关键度量值

-- OEE 三因子 + OEE(见 5.6 节)

-- OEE 与目标对比
OEE_差距 = [OEE] - SELECTEDVALUE('产线'[目标OEE], 0.85)

-- OEE 状态(用于条件格式)
OEE_状态 =
SWITCH(
    TRUE(),
    [OEE] >= 0.85, "达标",
    [OEE] >= 0.70, "改善中",
    "未达标"
)

-- 停机帕累托累计占比
停机累计占比 =
VAR 当前累计 =
    CALCULATE(
        [停机时间],
        FILTER(
            ALLSELECTED('原因代码表'),
            [停机时间] >= SELECTEDVALUE('原因代码表'[该原因停机时间])
        )
    )
VAR 总计 = CALCULATE([停机时间], ALLSELECTED('原因代码表'))
RETURN DIVIDE(当前累计, 总计, BLANK())

-- 最大损失原因(用于卡片显示)
最大停机原因 =
CALCULATE(
    SELECTEDVALUE('原因代码表'[原因名称]),
    TOPN(1, ALLSELECTED('原因代码表'), [停机时间])
)

-- Top N 停机设备
最差设备 =
CALCULATE(
    SELECTEDVALUE('设备维度表'[设备名称]),
    TOPN(1, ALLSELECTED('设备维度表'), [OEE], ASC)
)

9.5 页面结构

页 内容 受众
1 总览 全厂 OEE 卡片 + 30 天趋势 + 三因子分解 + 车间排名 厂长
2 车间 车间 OEE 趋势 + 产线对比条形图 + 停机帕累托 车间主任
3 设备 设备 OEE 排行(最差 Top 10)+ MTBF/MTTR 散点 + 停机明细表 设备工程师
4 工单明细 可筛选的工单级明细表(钻取页) 一线
5 指标定义 每个指标的计算公式、数据源、口径说明 所有人

9.6 实施效果(典型)

一个上线的 OEE 看板通常带来:

  • 会议时间缩短 40%~60%(不再对数字)
  • 数据口径统一(各部门不再各报各的)
  • 问题响应速度提升(发现异常从"月后发现"变成"当天发现")
  • 改善方向明确(帕累托直接指出最大损失源)

但要提醒:看板本身不产生改善,它只是让问题可见。真正的改善来自后续的行动。一个没人看的看板,等于没有看板——所以上线后要推动使用(如每天的例会必须投屏看板)。


十、学习路径与常见误区

10.1 学习顺序

阶段 内容 用时
1. 基础 Power Query 清洗、建简单图表 8h
2. 建模 星型模型、关系、日期表 8h
3. DAX 度量值、CALCULATE、时间智能 20h
4. 可视化 图表选择、交互、书签、钻取 10h
5. 发布 网关、刷新、RLS、工作区 6h

学习资源:

  • Microsoft 官方文档(learn.microsoft.com/power-bi)— 权威且免费
  • SQLBI(sqlbi.com)— DAX 领域最权威,有免费文章和 DAX Guide
  • 《DAX 权威指南》(The Definitive Guide to DAX,Marco Russo & Alberto Ferrari)— DAX 圣经
  • Power BI 官方示例数据集 — 边学边练

10.2 五个常见误区

误区 后果 正确做法
花 80% 时间美化图表 数据错了,图再美也没用 先建对模型
把 Excel 思维带进来(合并单元格、多个表头) Power Query 读不进去 数据必须是一维表
一个页面塞 20 个图 没人看得懂 一屏一决策
不做日期表 时间智能全部失效 第一个就建日期表
上线后不管了 没人用,变成僵尸看板 推动使用、持续迭代

10.3 与 Excel 的关系

Power BI 不会取代 Excel,两者是分工关系:

场景 用
数据量 < 10 万行,一次性分析 Excel
需要复杂单元格级操作 Excel
需要可复用、自动刷新、多人共享 Power BI
需要大数据量的交互式分析 Power BI
需要写回、建模、复杂计算 Excel

Power BI 的一个便利:分析结果可以导出到 Excel(且保持连接),业务人员熟悉的 Excel 操作依然能用。


结语:看板的终点是决策

最后一个建议:做看板之前先想清楚"看了之后要做什么决定"。

如果一个指标看与不看,行为都一样,那它就不该出现在看板上。比如"本月累计开机时长"——看了能做什么?没有行动对应。而"停机时间 Top 3 原因"就能直接指向行动(安排改善)。

好的看板是行动清单,不是数据展示墙。

衡量一个看板好不好,有一个简单的标准:每天看完看板后,能立刻说出今天要做的三件事吗? 如果能,这个看板就成功了。

相关阅读

  • Minitab 工业工程实战指南:从数据到结论的完整链路:工业工程领域出镜率最高的统计软件。本文按拿到数据后的真实使用顺序组织:数据导入清洗、图形化汇…
  • 工业工程必备软件地图:从 Excel 到 FlexSim,每个阶段该学什么:按学习阶段给出 IE 的软件全景图:Excel、统计分析、仿真建模、CAD、企业系统,并给出…
  • 工业工程师的 Excel 实战手册:从工时分析、过程能力到线平衡的 30 个技法:面向 IE 场景的 Excel 实操手册:连续测时数据差分还原、IQR 与 3σ 异常值剔除…
  • 工业工程数据与指标看板:从指标定义、采集口径到可视化落地的完整手册:从指标定义卡 12 要素讲到看板落地:OEE 三种分母口径对照(负荷 75.45% / 计划…
  • SQL 工业工程数据分析实战:从 MES 取数到指标看板:IE 日常有 60% 的时间花在等数据上。本文从真实取数场景出发,讲透 SQL 核心语法(S…
相关文章

APS排到分钟级:有限产能可以按工作中心切

Acumatica 2026 R2 已正式发布,制造业侧三项增强:APS 支持按工作中心分别设置有限或无限产能、排程精度细化到分钟、重叠班次合并为单一日历;

TrakSYS 14.1:用对话配置MES

Parsec Automation 发布 TrakSYS 14.1,核心是 TrakSYS IQ Build:一个基于模型上下文协议(MCP)的连接器。

MES 12.0:AI智能体直接改配置,还要人点头

10 月 20 日,Critical Manufacturing 发布 MES 驱动的工业运营平台 12.0 版。

浪潮海岳MOM9.0:九大模块全面AI化

10 月 16 日,浪潮数字企业在山东省具身智能产业发展大会上发布浪潮海岳 AI 原生工业软件——新一代制造运营 MOM9.0。

Poka发布无代码AI Studio

IFS 旗下工业 AI 平台 Poka 在 IFS Unleashed 大会上发布 Poka AI Studio——一个面向车间“人的流程”管理的无代码智能体构。

工业智能中枢 + 数字孪生验证层

10 月 12 日第二十六届中国国际工业博览会期间,库卡在上海发布“开天 KAI”智能平台并同步推出 Visual Components CN。

目录
当前文章没有目录
Copyright © 2002 CUMT All Rights Reserved. Powered by 中国矿业大学工业工程系.
粤ICP备2024349181号-3