工业工程

工业工程

首页
专业认知
课程体系
方法与工具
软件技能
就业发展
考研深造
院校学科
行业洞察
文章
关于
登录 →
工业工程

工业工程

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

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

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

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…
相关文章
Visio 与流程图实战:价值流图、工序流程图与业务建模

Visio 与流程图实战:价值流图、工序流程图与业务建模

一张画得对的价值流图,能让改善讨论从「我觉得」变成「数据显示」。本文讲透:工具选型(Visio/draw.io/Mermaid 等十款对比)、流程图四层体系(工序流程/业务泳道/价值流/BPMN)、工序分析五种符号与流程程序图、VSM 完整绘制法(现状图七步、数据框填法、时间线与增值比、未来图设计六问、定拍工序)、泳道图画法、Visio 与 draw.io 高效操作技巧、让图能沟通的九原则,以及一套装配线 VSM 落地案例。

Python 与 VBA:工业工程自动化的两条路径怎么选

Python 与 VBA:工业工程自动化的两条路径怎么选

每周花 4 小时做同一份报表,一年就是 200 小时。本文系统对比两条自动化路径:VBA(Excel 原生、零部署、适合操作 Excel 本身)与 Python(生态强大、适合数据处理与跨系统),给出明确选型决策树;讲透 VBA 核心能力(宏录制、Range、数组优化、事件、代码片段)与 Python 数据处理栈(pandas、openpyxl、数据清洗七步),含五个可复制案例(多文件合并、BOM 比对、工时清洗、批量重命名、自动发邮件报表)和九个新手坑。

MES 系统完全指南:从原理、选型到落地实施

MES 系统完全指南:从原理、选型到落地实施

MES 是工厂数字化投入最大、失败率也最高的系统之一。本文讲透:MES 到底解决什么问题(ERP 和 SCADA 为何解决不了)、ISA-95 五层架构与 MES 定位、十一大核心功能模块、与 ERP/QMS/WMS/SCADA 的边界与集成接口、三种数据采集方式的取舍与老设备改造方案、选型评估六维度、实施五阶段与分批上线策略,以及八个常见陷阱——包括为什么「先上 MES 再理流程」必然失败。

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

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

每天早会 25 分钟花在对数字上,根源是没有口径统一、自动刷新的数据源。本文讲透 Power BI 完整链路:何时该用何时不该、Power Query 数据清洗十类操作与逆透视、星型模型与表关系设计、DAX 核心(计算列 vs 度量值、筛选上下文、CALCULATE、迭代函数、时间智能)、十五个生产管理度量值代码、图表选择与避坑、网关刷新与行级安全,以及看板设计七原则和一套 OEE 管理驾驶舱落地案例。

SQL 工业工程数据分析实战:从 MES 取数到指标看板

SQL 工业工程数据分析实战:从 MES 取数到指标看板

IE 日常有 60% 的时间花在等数据上。本文从真实取数场景出发,讲透 SQL 核心语法(SELECT/WHERE/GROUP BY/JOIN/子查询/CTE/窗口函数/日期处理)、MES 与 ERP 的典型表结构与 ER 关系、如何快速摸清陌生数据库、十二个高频实战查询模板(OEE、工单周期、瓶颈识别、不良帕累托、停机归因、WIP 追踪、挣值工时、正反向追溯、同比环比、换型矩阵、技能矩阵、呆滞库存),以及六大陷阱(一对多重复计数、NULL 静默丢数、日期边界、时区班次、粒度错误、生产库性能)。

AutoCAD 工厂布局实战:从平面图到可落地的设施规划

AutoCAD 工厂布局实战:从平面图到可落地的设施规划

一张合格的车间布局图要能直接拿去施工、报消防、做产能核算、给仿真建模。本文系统讲解 IE 用 AutoCAD 做设施规划的完整链路:软件选型、国标制图规范、高频命令速查、设备图块库与动态块建设、SLP 五步法、厂区级与车间级布局要点、消防与安全间距、人机工程尺寸应用,以及从 CAD 到仿真的数字化交付。

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