适用版本
- Power BI Desktop 2026-09 版;Shopee / Lazada 卖家后台导出的栏位名称会随平台更新而改变,以实际下载的文件为准
重点内容
整体规划
flowchart LR
subgraph S["OneDrive 资料夹"]
S1["Shopee/ 每月订单 xlsx"]
S2["Lazada/ 每月订单 xlsx"]
S3["Products.xlsx 产品成本表"]
end
subgraph Q["Power Query"]
Q1["Folder 合并各月文件"]
Q2["统一栏位名称与格式"]
Q3["Append 成一个 Orders 表"]
end
subgraph M["模型 + 报表"]
M1["Orders ← Products / Date"]
M2["度量值 + 一页仪表板"]
end
S --> Q --> M
资料夹结构(放在 OneDrive for Business / SharePoint,发布后才方便自动刷新):
销售报表/
├── Shopee/
│ ├── 2026-07.xlsx
│ ├── 2026-08.xlsx
│ └── 2026-09.xlsx
├── Lazada/
│ ├── 2026-07.xlsx
│ └── ...
└── Products.xlsx # SKU、产品名称、分类、成本(RM)第 1 步:统一栏位(最关键)
两个平台的栏位名称不同,先决定一套共同的栏位名称:
| 共同栏位 | 意思 | 注意 |
|---|---|---|
OrderID | 订单编号 | 两个平台的编号可能重复,加上平台前缀,例如 SP-、LZ- |
OrderDate | 下单日期 | 只保留日期,去掉时间 |
SKU | 卖家自订 SKU | 用来连产品成本表,两个平台要用同一套 SKU |
Qty | 数量 | 整数 |
Amount | 这一行的销售金额(RM) | 先决定用「买家付款金额」还是「扣除平台费用后的金额」,两边要一致 |
State | 收货州属 | 统一大小写和拼法(例如 W.P. Kuala Lumpur / Kuala Lumpur) |
Status | 订单状态 | 只保留已完成的订单 |
Platform | 平台 | 新增的固定值栏:Shopee / Lazada |
📌 金额口径(含不含运费、平台手续费、优惠券)一定要先想清楚写下来,不然两个平台的数字加在一起没有意义。
第 2 步:Power Query 合并与清洗
Shopee 部分:
- (或 SharePoint folder)→ 选
Shopee资料夹 → Combine & Transform Data - 选第一个文件的工作表当样本,Power BI 会自动把所有月份接起来
- 只保留需要的栏位 → Remove Other Columns
- 按上表重新命名栏位(双击栏位标题)
- 日期 、金额改 Fixed Decimal Number、州属 Trim + Capitalize Each Word
- 筛选状态只留已完成
- ,名称
Platform,公式"Shopee" - 查询改名为
Shopee
Lazada 部分: 同样步骤做一次,查询改名为 Lazada,Platform 填 "Lazada"。
合并: → 选 Shopee 和 Lazada → 新查询改名 Orders。然后在 Shopee、Lazada 两个查询上按右键,取消勾选 Enable load(只当中间步骤,不载入模型)。
产品表: Get data → Excel → Products.xlsx,确认 SKU 没有重复。
第 3 步:模型
- 照 EP03 建
Date日期表并 Mark as date table - Model view 建立关系:
Products[SKU]→Orders[SKU](一对多)Date[Date]→Orders[OrderDate](一对多)
- 隐藏
Orders里的SKU、OrderID这类只用来连接的栏位
第 4 步:度量值
Total Sales = SUM ( Orders[Amount] )
Order Count = DISTINCTCOUNT ( Orders[OrderID] )
Average Order Value = DIVIDE ( [Total Sales], [Order Count] )
Total Cost = SUMX ( Orders, Orders[Qty] * RELATED ( Products[Cost] ) )
Gross Profit = [Total Sales] - [Total Cost]
Gross Margin % = DIVIDE ( [Gross Profit], [Total Sales] )
Sales Last Month =
CALCULATE ( [Total Sales], DATEADD ( 'Date'[Date], -1, MONTH ) )
Sales MoM % = DIVIDE ( [Total Sales] - [Sales Last Month], [Sales Last Month] )📌 Order Count 用 DISTINCTCOUNT,因为一张订单可能有好几行(好几个产品),用 COUNTROWS 会多算。
第 5 步:报表版面
| 位置 | 视觉对象 | 内容 |
|---|---|---|
| 上方一排 | 4 个 Card | Total Sales、Order Count、Average Order Value、Gross Margin % |
| 左中 | Line chart | X 轴 Date[Month](按年月),Y 轴 Total Sales,Legend 放 Platform |
| 右中 | Donut | Platform × Total Sales(只有 2 个类别,适合圆环图) |
| 左下 | Bar chart | State × Total Sales,由大到小排序 |
| 右下 | Table | 产品名称、Qty、Total Sales、Gross Margin %,筛选 Top 10 |
| 最上方 | Slicer | 日期区间、平台、产品分类 |
- 4 个 Card 在 Edit interactions 里设为会被切片器筛选、但不被下方图表筛选(按需求决定)
- 标题写结论,例如「Shopee 贡献 62% 营业额」
第 6 步:发布与每月更新
- Publish 到共用工作区
- 语义模型 Settings:确认凭证,开启 Scheduled refresh(例如每天早上 8:00,时区 Kuala Lumpur)
- 以后每个月只要:把新的月份文件放进
Shopee/、Lazada/资料夹 → 等自动刷新(或按 Refresh now) - 用 App 或 Share 给合伙人看
学完你会
常见错误
- ❌ 两个平台的金额口径不同就直接相加:一边含运费一边不含,总数没有意义。
- ❌ 两个平台用不同的 SKU:连不上产品成本表,毛利算不出来,要先统一 SKU。
- ❌ 订单数用
COUNTROWS:多个产品的订单会被重复计算,用DISTINCTCOUNT ( Orders[OrderID] )。 - ❌ 中间查询也载入模型:
Shopee、Lazada两个中间表跟Orders重复,模型变大又容易选错,取消 Enable load。 - ❌ 平台改了导出格式没发现:刷新报错或栏位变空白,每次改版后检查一次 Power Query 步骤。
Sources
官方文档: