采购BI实践

该下仅方法论自拟,其余全程使用ai!

01价格分析BI

0101主体

需求构建一个:

①能够系统分析出采购的重要物料品类、重要供应商

②分析各物料品类的平均价格,价格稳定性及价格趋势

③能区分不同供应商分别在物料上给付的最优、最劣价格

基于以上需求,提供一个应具备如下功能的看板:

①日期及物料类型切片器,其中物料类型选择时只能选择1个。

②受切片器影响的对应特定物料的采购供应商总金额排行(显示供应商名,列的直方图,确切数值,以及供应商数量,并将占据该物料类型90%金额的供应商标红)

③显示当前切片器下采购的总金额

④存货集成表,显示存货编码,供应数量,计量单位,消耗金额,最低采购单价,最低采购单价物料的数量占比,最高采购单价,最高采购单价的数量占比,单价(高低)差异率,平均单价,最新价格。

⑤采购供应商散点图,纵轴是供应商在存货集成表(存货编码)及切片器筛选下的总金额,横轴是其单价,其中的散点图是对应的供应商。

⑥时序显示的选中物料和存货编码的物料单价趋势折线图(附有线性趋势虚线),横轴是时间,纵轴是对应时间该物料的采购单价。

0102构建的报表结构

首先创建:物料表、供应商表、采购订单表(实践可能不止,但大致方向一致)

载入powerbi中,一步步实现前述功能。(默认已完成清洗,金额单位、币种置换等)

①日期及物料类型切片器

日期表直接建立(采购订单表[采购日期])

然后创建三个度量值:

选中物料金额 = 
CALCULATE(
    SUM('采购订单表'[金额])
)
总金额 = 
CALCULATE(
    SUM('采购订单表'[金额]),
    REMOVEFILTERS('物料表')
)
选中物料占比 = 
DIVIDE(
    [选中物料金额],
    [总金额]
)

然后在切片器中添加物料表[物料类型],在卡片图中添加“选中物料金额”和“选中物料占比”。

图示:

②采购供应商总金额排行

首先创建度量值:

供应商总金额 = 
SUM('采购订单表'[金额])
供应商数量 = 
DISTINCTCOUNT('采购订单表'[供应商编码])
前90%供应商数量 = 
VAR TotalAmount = CALCULATE([总金额], ALLSELECTED('供应商表'))
VAR SuppliersTable =
    ADDCOLUMNS(
        VALUES('供应商表'[供应商编码]),
        "SupplierAmount", [供应商总金额]
    )
VAR SortedSuppliers =
    FILTER(
        SuppliersTable,
        [SupplierAmount] > 0
    )
VAR RankedSuppliers =
    ADDCOLUMNS(
        SortedSuppliers,
        "Rank", RANKX(SortedSuppliers, [SupplierAmount], , DESC)
    )
VAR CumulativeTable =
    ADDCOLUMNS(
        RankedSuppliers,
        "CumulativeAmount",
            VAR CurrentRank = [Rank]
            RETURN
                SUMX(
                    FILTER(RankedSuppliers, [Rank] <= CurrentRank),
                    [SupplierAmount]
                )
    )
VAR Threshold = TotalAmount * 0.9
VAR SuppliersInTop90 =
    FILTER(
        CumulativeTable,
        [CumulativeAmount] <= Threshold
    )
RETURN
    IF(
        ISEMPTY(SuppliersInTop90),
        0,
        MAXX(SuppliersInTop90, [Rank])
    )

使用簇状条形图,添加:

Y轴:供应商表[供应商名称]

X轴:供应商总金额

使用卡片图,添加:供应商数量、前90%供应商数量。

图示:

③当前切片器下采购的总金额

创建度量值:

采购总金额 = 
CALCULATE(
    SUM('采购订单表'[金额]),
    ALL('物料表')
)
采购下单次数 = 
CALCULATE(
    DISTINCTCOUNT('采购订单表'[订单编码]),
    ALL('物料表')
)

放入卡片即可。

④存货集成表

创建以下度量值:

供应数量 = 
SUM('采购订单表'[采购数量])
消耗金额 = 
SUM('采购订单表'[金额])
最低采购单价 = 
MIN('采购订单表'[采购单价])
最高采购单价 = 
MAX('采购订单表'[采购单价])
最低价数量占比 = 
VAR MinPrice = [最低采购单价]
VAR MinPriceQty = 
    CALCULATE(
        [供应数量],
        '采购订单表'[采购单价] = MinPrice
    )
RETURN
DIVIDE(MinPriceQty, [供应数量])
最高价数量占比 = 
VAR MaxPrice = [最高采购单价]
VAR MaxPriceQty = 
    CALCULATE(
        [供应数量],
        '采购订单表'[采购单价] = MaxPrice
    )
RETURN
DIVIDE(MaxPriceQty, [供应数量])
单价差异率 = 
DIVIDE(
    [最高采购单价] - [最低采购单价],
    [最低采购单价]
)
平均单价 = 
DIVIDE(
    [消耗金额],
    [供应数量]
)
最新价格 = 
CALCULATE(
    MAX('采购订单表'[采购单价]),
    TOPN(
        1,
        '采购订单表',
        '采购订单表'[采购日期],
        DESC
    )
)

将度量值全部添加进表的列即可。

图示:

⑤采购供应商散点图

创建度量值:

供应商加权平均单价 = 
DIVIDE(
    [供应商总金额],
    SUM('采购订单表'[采购数量])
)
供应商采购频次 = 
DISTINCTCOUNT('采购订单表'[订单编码])

散点图中:

X轴供应商加权平均单价

Y轴供应商总金额

图例供应商表[供应商名称]

大小供应商采购频次

图示:

⑥物料单价趋势折线图

创建度量值:

按日平均单价 = 
CALCULATE(
    AVERAGE('采购订单表'[采购单价]),
    VALUES('采购订单表'[采购日期])
)
连续日期序列 = 
VAR StartDate = MIN('采购订单表'[采购日期])
VAR EndDate = MAX('采购订单表'[采购日期])
RETURN
CALENDAR(StartDate, EndDate)

创建表:

连续日期表 = 
VAR MinDate = MIN('采购订单表'[采购日期])
VAR MaxDate = MAX('采购订单表'[采购日期])
RETURN
ADDCOLUMNS(
    CALENDAR(MinDate, MaxDate),
    "年", YEAR([Date]),
    "月", FORMAT([Date], "MM"),
    "日", DAY([Date]),
    "年月", FORMAT([Date], "YYYY-MM")
)

建立连续日期表[Date]采购订单表[采购日期],设置多对一并且单向的关系(无空白)。

折线图:

X轴连续日期表[Date]

Y轴按日平均单价

图示:

加入更多数据:

完成!

0103报表的使用

”物料类型“可以根据实际需要转换为产品品类或其他的类型字段。这里就是可以唯一判断一种关键类型信息的:供应商及价格趋势。

在供应商上,可以看出该类型在公司中的重要性(点1),供货供应商的数量(点2),是否有重要垄断型供应特征还是分散型供应特征(可以从散点【向上是采购金额,向右是采购单价,大小是采购数额】上看出,按道理来说采购金额越高(越靠上,散点越大),因为同一种品类,越左上可能就越重要,右上可能就需要一个重组或谈判的操作,右下可能就是需要去除的。

在存货上,实际上可以看不同存货类型的最高价和最低价的差异率(波动指标)。

在整体趋势上,不仅可以看到单价趋势【向上和向下都可以做归因分析】,也可以看到趋势的波动性【对于单价有高波动的,可适当增加安全库存或者优化,我们喜欢稳定可预测性】。

02成本分析BI

0201主体

需求构建一个:

①系统分析当期各产品当前产量、具体生产成本及其同比。

②分析当期产量对应品类分类、以及成本结构。

③分析全时产量及成本趋势。

基于以上需求,提供一个应具备如下功能的看板:

①日期切片器:可下拉选中一个日期【格式:年-月(2024-1、20242...)】,然后根据该切片器输出当期和环比的总产量、总生产成本、单位平均生产成本及显示对应增减百分比。

②存货表格:显示对应存货名称,及其按顺序排列的存货产量柱,以及其单位生产成本,并在产量和单位生产成本标注环比的增减。【后续进行特定选择时,还能据此分析其成本结构,存货分类的产品品类产量,以及和产量和单位生产成本趋势。】

③产品品类产量柱状图:如名。

④成本结构环状图:将筛选特定存货或特定产品品类,输出其对应的成本结构(若有更多细分【例如一级细分为材料、制造、人工,二级细分就是“人工”中的直接人工,管理人员工资等等】可以根据需要架设更多细分出来的成本结构环状图)

⑤产量成本趋势图:显示特定选择的存货、产品品类的:产量、成本趋势(不记日期筛选,近一年)折线图。

0202所需的主要数据

首先让ai根据一般流程,生成对应的制造业成本分析可能需要的表:

产品主数据表(存货编码,存货名称,产品品类,是否启用)

生产成本明细表(生产日期,存货编码,产量,总生产成本,材料成本,人工成本 ,制造费用 ,其他成本)

成本结构明细表(生产日期,存货编码,成本类型,成本子类型,成本金额)

0203构建的报表结构

首先创建:产品主数据表、生产成本明细表、成本结构明细表(实践可能不止,但大致方向一致)

①日期表构建/日期切片器

新建日期表:

DateTable =

VAR MinDate = MIN('生产成本明细表'[生产日期])

VAR MaxDate = MAX('生产成本明细表'[生产日期])

RETURN

ADDCOLUMNS (

    CALENDAR (MinDate, MaxDate),

    "Year", YEAR([Date]),

    "Month", MONTH([Date]),

    "YearMonth", FORMAT([Date], "YYYY年M月"),  -- 改为中文格式更清晰

    "YearMonthShort", FORMAT([Date], "YYYY-M"),  -- 短格式

    "YearMonthNum", YEAR([Date]) * 100 + MONTH([Date]),  -- 数值排序字段

    "MonthName", FORMAT([Date], "MMMM"),

    "Quarter", "Q" & QUARTER([Date])

)

切片器及筛选值:

然后汇集对应度量值:

基础度量值:

总产量 = 
CALCULATE(
    SUM('生产成本明细表'[产量]),
    ALLSELECTED('DateTable')
)

总生产成本 = 
CALCULATE(
    SUM('生产成本明细表'[总生产成本]),
    ALLSELECTED('DateTable')
)

单位平均生产成本 = 
DIVIDE(
    [总生产成本],
    [总产量],
    BLANK()
)

环比度量值:

上期总产量 = 
CALCULATE(
    [总产量],
    DATEADD('DateTable'[Date], -1, MONTH)
)

上期总生产成本 = 
CALCULATE(
    [总生产成本],
    DATEADD('DateTable'[Date], -1, MONTH)
)

上期单位平均生产成本 = 
CALCULATE(
    [单位平均生产成本],
    DATEADD('DateTable'[Date], -1, MONTH)
)

产量环比% = 
DIVIDE(
    [总产量] - [上期总产量],
    [上期总产量],
    BLANK()
)

成本环比% = 
DIVIDE(
    [总生产成本] - [上期总生产成本],
    [上期总生产成本],
    BLANK()
)

单位平均成本环比% = 
DIVIDE(
    [单位平均生产成本] - [上期单位平均生产成本],
    [上期单位平均生产成本],
    BLANK()
)

度量显示:

总产量显示 = 
VAR CurrentValue = [总产量]
VAR MomChange = [产量环比%]
RETURN
IF(
    ISBLANK(CurrentValue),
    "─",
    FORMAT(CurrentValue, "#,##0") & UNICHAR(10) &
    IF(
        ISBLANK(MomChange),
        "● 无上月数据",
        IF(MomChange > 0, 
            "🟢 +" & FORMAT(ABS(MomChange), "0.0%"),
            IF(MomChange < 0, 
                "🔴 " & FORMAT(MomChange, "0.0%"),  -- 负数会自动显示-号
                "⚪ " & FORMAT(ABS(MomChange), "0.0%")
            )
        )
    )
)

总成本显示 = 
VAR CurrentValue = [总生产成本]
VAR MomChange = [成本环比%]
RETURN
IF(
    ISBLANK(CurrentValue),
    "─",
    FORMAT(CurrentValue, "¥#,##0") & UNICHAR(10) &
    IF(
        ISBLANK(MomChange),
        "● 无上月数据",
        IF(MomChange > 0, 
            "🔴 +" & FORMAT(ABS(MomChange), "0.0%"),  -- 成本增加用红色
            IF(MomChange < 0, 
                "🟢 " & FORMAT(MomChange, "0.0%"),    -- 成本减少用绿色
                "⚪ " & FORMAT(ABS(MomChange), "0.0%")
            )
        )
    )
)

单位成本显示 = 
VAR CurrentValue = [单位平均生产成本]
VAR MomChange = [单位平均成本环比%]
RETURN
IF(
    ISBLANK(CurrentValue),
    "─",
    FORMAT(CurrentValue, "¥#,##0.00") & UNICHAR(10) &
    IF(
        ISBLANK(MomChange),
        "● 无上月数据",
        IF(MomChange > 0, 
            "🔴 +" & FORMAT(ABS(MomChange), "0.0%"),  -- 单位成本增加用红色
            IF(MomChange < 0, 
                "🟢 " & FORMAT(MomChange, "0.0%"),    -- 单位成本减少用绿色
                "⚪ " & FORMAT(ABS(MomChange), "0.0%")
            )
        )
    )
)

②存货柱状图

汇集度量值:

-- 存货当期产量
存货当期产量 = 
CALCULATE(
    SUM('生产成本明细表'[产量]),
    ALLSELECTED('DateTable')
)

-- 存货当期总成本
存货当期总成本 = 
CALCULATE(
    SUM('生产成本明细表'[总生产成本]),
    ALLSELECTED('DateTable')
)

-- 存货单位生产成本
存货单位成本 = 
DIVIDE(
    [存货当期总成本],
    [存货当期产量],
    BLANK()
)

环比度量值:

-- 存货上期产量
存货上期产量 = 
CALCULATE(
    [存货当期产量],
    DATEADD('DateTable'[Date], -1, MONTH)
)

-- 存货上期单位成本
存货上期单位成本 = 
CALCULATE(
    [存货单位成本],
    DATEADD('DateTable'[Date], -1, MONTH)
)

-- 存货产量环比%
存货产量环比% = 
DIVIDE(
    [存货当期产量] - [存货上期产量],
    [存货上期产量],
    BLANK()
)

-- 存货单位成本环比%
存货单位成本环比% = 
DIVIDE(
    [存货单位成本] - [存货上期单位成本],
    [存货上期单位成本],
    BLANK()
)

显示用:

-- 产量显示(含环比)
存货产量显示 = 
VAR CurrentValue = [存货当期产量]
VAR MomChange = [存货产量环比%]
RETURN
IF(
    ISBLANK(CurrentValue),
    "",
    FORMAT(CurrentValue, "#,##0") & " " &
    IF(
        ISBLANK(MomChange),
        "●",
        IF(MomChange > 0, 
            "▲+" & FORMAT(ABS(MomChange), "0.0%"),
            IF(MomChange < 0, 
                "▼" & FORMAT(MomChange, "0.0%"),
                "●" & FORMAT(ABS(MomChange), "0.0%")
            )
        )
    )
)

-- 单位成本显示(含环比)
存货单位成本显示 = 
VAR CurrentValue = [存货单位成本]
VAR MomChange = [存货单位成本环比%]
RETURN
IF(
    ISBLANK(CurrentValue),
    "",
    FORMAT(CurrentValue, "¥#,##0.00") & " " &
    IF(
        ISBLANK(MomChange),
        "●",
        IF(MomChange > 0, 
            "▲+" & FORMAT(ABS(MomChange), "0.0%"),
            IF(MomChange < 0, 
                "▼" & FORMAT(MomChange, "0.0%"),
                "●" & FORMAT(ABS(MomChange), "0.0%")
            )
        )
    )
)

图:

③产品品类产量柱状图

基本度量值:
品类总产量 = 
CALCULATE(
    SUM('生产成本明细表'[产量]),
    ALLSELECTED('DateTable')
)
-- 产品品类排名(用于排序)
品类产量排名 = 
RANKX(
    ALLSELECTED('产品主数据表'[产品品类]),
    [品类总产量],
    ,
    DESC,
    Dense
)

④成本结构环状图

度量值:

一级占比 =

DIVIDE(

    SUM('成本结构明细表'[成本金额]),

    CALCULATE(

        SUM('成本结构明细表'[成本金额]),

        ALLSELECTED('成本结构明细表'[成本类型])

    ),

    0

)

二级占比 =

DIVIDE(

    SUM('成本结构明细表'[成本金额]),

    CALCULATE(

        SUM('成本结构明细表'[成本金额]),

        ALLSELECTED('成本结构明细表'[成本子类型])

    ),

    0

)

图:

⑤产量成本趋势图

全时段日期建表:

全时段日期表 = 
VAR MinDate = MIN('生产成本明细表'[生产日期])
VAR MaxDate = MAX('生产成本明细表'[生产日期])
RETURN
ADDCOLUMNS (
    CALENDAR (MinDate, MaxDate),
    "Year", YEAR([Date]),
    "Month", MONTH([Date]),
    "YearMonth", FORMAT([Date], "YYYY-MM"),
    "YearMonthDisplay", FORMAT([Date], "YYYY年M月"),
    "YearMonthNum", YEAR([Date]) * 100 + MONTH([Date])
)

趋势分析度量值:

-- 月度总产量(按全时段日期表的月份分组)
月度总产量 = 
CALCULATE(
    SUM('生产成本明细表'[产量]),
    ALLEXCEPT('生产成本明细表', '全时段日期表')
)

-- 月度总成本(按全时段日期表的月份分组)
月度总成本 = 
CALCULATE(
    SUM('生产成本明细表'[总生产成本]),
    ALLEXCEPT('生产成本明细表', '全时段日期表')
)

-- 月度单位成本
月度单位成本 = 
DIVIDE(
    [月度总成本],
    [月度总产量],
    BLANK()
)

图:

整体:

多数据:

完成!

0204报表的使用

通过产量和成本的变化来了解一个产线的趋势。比如产量升(总)成本升是比较正常的【但一般不会比产量要快】,产量降成本升属于异动归因【做更少的事要花更多的钱】,产量升成本降可以归因好的方面【降本增效】。

这个报表不仅可以根据存货来看成本结构和成本趋势,也可以用产品品类来看。

成本结构上,就可以在归因时有所针对。当前的报表只实现了百分比,其实可以加入对应的确切金额及其变动信息。

在趋势上通常来说,产量与单位成本之间存在着反向关系,即随着产量的增加,单位成本会呈现先下降后可能趋于平稳或上升的趋势。【比如产量上升,单位成本也上升是危险的,预示着产量可能超过了健康的规模。也可能是由于外部的扰动,具体得看成本结构,去对应的日期进行查询】

03时效分析BI

0301主体

需求构建一个:

①能分析平均采购周期范围(平均及最早and最晚)

【采购周期=采购到货-采购下单的时间差、最早最晚就是分第一批次和最后批次的到货日期】

②能分析各供应商响应速度【平均采购实际周期的排名】及采购周期与计划的差异的差值趋势【平均采购实际周期和平均计划周期的区别】

③分析采购实际与计划的频率差异【早于计划、晚于计划】

④分析供应商的采购规模和采购周期的分布【合理性】

0302所需的主要数据

0303构建的报表结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值