Microsoft Lab
全部软件
Power BI约 11 分钟

实战:做一个 Shopee + Lazada 网店销售仪表板

适用版本

  • 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 部分:

  1. Get data›Folder(或 SharePoint folder)→ 选 Shopee 资料夹 → Combine & Transform Data
  2. 选第一个文件的工作表当样本,Power BI 会自动把所有月份接起来
  3. 只保留需要的栏位 → Remove Other Columns
  4. 按上表重新命名栏位(双击栏位标题)
  5. 日期 Change Type›Using Locale、金额改 Fixed Decimal Number、州属 Trim + Capitalize Each Word
  6. 筛选状态只留已完成
  7. Add Column›Custom Column,名称 Platform,公式 "Shopee"
  8. 查询改名为 Shopee

Lazada 部分: 同样步骤做一次,查询改名为 Lazada,Platform 填 "Lazada"。

合并: Home›Append Queries as New → 选 Shopee 和 Lazada → 新查询改名 Orders。然后在 Shopee、Lazada 两个查询上按右键,取消勾选 Enable load(只当中间步骤,不载入模型)。

产品表: Get data → Excel → Products.xlsx,确认 SKU 没有重复。


第 3 步:模型

  1. 照 EP03 建 Date 日期表并 Mark as date table
  2. Model view 建立关系:
    • Products[SKU] → Orders[SKU](一对多)
    • Date[Date] → Orders[OrderDate](一对多)
  3. 隐藏 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 个 CardTotal Sales、Order Count、Average Order Value、Gross Margin %
左中Line chartX 轴 Date[Month](按年月),Y 轴 Total Sales,Legend 放 Platform
右中DonutPlatform × Total Sales(只有 2 个类别,适合圆环图)
左下Bar chartState × Total Sales,由大到小排序
右下Table产品名称、Qty、Total Sales、Gross Margin %,筛选 Top 10
最上方Slicer日期区间、平台、产品分类
  • 4 个 Card 在 Edit interactions 里设为会被切片器筛选、但不被下方图表筛选(按需求决定)
  • 标题写结论,例如「Shopee 贡献 62% 营业额」

第 6 步:发布与每月更新

  1. Publish 到共用工作区
  2. 语义模型 Settings:确认凭证,开启 Scheduled refresh(例如每天早上 8:00,时区 Kuala Lumpur)
  3. 以后每个月只要:把新的月份文件放进 Shopee/、Lazada/ 资料夹 → 等自动刷新(或按 Refresh now)
  4. 用 App 或 Share 给合伙人看

学完你会

常见错误

  • ❌ 两个平台的金额口径不同就直接相加:一边含运费一边不含,总数没有意义。
  • ❌ 两个平台用不同的 SKU:连不上产品成本表,毛利算不出来,要先统一 SKU。
  • ❌ 订单数用 COUNTROWS:多个产品的订单会被重复计算,用 DISTINCTCOUNT ( Orders[OrderID] )。
  • ❌ 中间查询也载入模型:Shopee、Lazada 两个中间表跟 Orders 重复,模型变大又容易选错,取消 Enable load。
  • ❌ 平台改了导出格式没发现:刷新报错或栏位变空白,每次改版后检查一次 Power Query 步骤。

Sources

官方文档:

  1. Combine files (binaries) overview - Microsoft Learn
  2. Append queries - Microsoft Learn
  3. Understand star schema and the importance for Power BI - Microsoft Learn
  4. SUMX function (DAX) - Microsoft Learn
  5. Data refresh in Power BI - Microsoft Learn

📝 随堂测验

答完才知道有没有真的学会。答错没关系,每题都有解析。

测验一下共 6 题
只记在你的浏览器里,换设备不会同步。