PowerBI分析模板-财务P&L损益表

加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,提问交流,有问必答。

P&L statement,损益表,也被叫做Income statement,是企业的三大核心财务报表之一,它从Revenue收入(因其位于报表顶部常被称作top line)到Net Income净收益/净利润(因其位于报表底部常被称作bottom line),反映公司在特定会计期间(如季度或年度)的收入、成本、费用以及最终盈利(或亏损)状况‌。通过将其与‌去年同期数据、预算目标以及滚动预测的不同版本进行对比‌,管理层可以‌追踪和分析企业的经营业绩(或财务表现)。

解决方案

在PowerBI中实现上方的P&L损益表,涉及以下知识点:

1 搭建星型架构模型。每个事实表(实际、预算、预测)分别与公共的日期表、科目表建立多对一关系。

参考<100例>2.1 天下大模型必作于小的星型架构。

2 报表中有些科目是计算得来的,不是数据源SUM来的,比如Revenue的total、Gross margin、Operating income、Operating income%等,因此不需要数据源提供这些数据。通过Switch度量值可以计算各个科目的数字,注意因为有跨科目之间的运算,会用到All函数清除外部筛选。同时,数据源中数字都是按正数记录的,报表中需要将支出类数字体现为负值,可以乘以科目表中的正负属性切换为负值。

Actual_Full_Accounts =

VAR _vm_revenue = CALCULATE([Actual], FILTER(ALL(Dim_Account), [Account_Group]="Revenue"))

VAR _vm_cost = CALCULATE([Actual], FILTER(ALL(Dim_Account), [Account_Group]="Cost"))

VAR _vm_expense = CALCULATE([Actual], FILTER(ALL(Dim_Account), [Account_Group]="Expense"))

VAR _vm_otherincome = CALCULATE([Actual], FILTER(ALL(Dim_Account), [Account_Group]="Other income, net"))

VAR _vm_provision = CALCULATE([Actual], FILTER(ALL(Dim_Account), [Account_Group]="Provision for income taxes"))

RETURN

SWITCH(SELECTEDVALUE(Dim_Account[Account]),

    "Revenue", _vm_revenue,

    "Cost", _vm_cost,

    "Gross margin", _vm_revenue-_vm_cost,

    "Gross margin%", DIVIDE(_vm_revenue-_vm_cost,_vm_revenue),

    "Expense", _vm_expense,

    "Operating income", _vm_revenue-_vm_cost-_vm_expense,

    "Operating income%", DIVIDE(_vm_revenue-_vm_cost-_vm_expense,_vm_revenue),

    "Net Income", _vm_revenue-_vm_cost-_vm_expense+_vm_otherincome-_vm_provision,

    "Net Income%", DIVIDE(_vm_revenue-_vm_cost-_vm_expense+_vm_otherincome-_vm_provision,_vm_revenue),

    [Actual]

) * SELECTEDVALUE(Dim_Account[+/-])

参考<100例>2.29 多个度量值合并为一个共有维度的度量值,2.10 核心函数CALCULATE。

3 不同科目的显示格式不同,比如Actual度量值,在Revenue科目是整数,在Gross margin%科目是百分数。使用度量值的动态格式可以在不改变底层数字的前提下,调整显示格式。以Variance_LY为例,格式字符串如下:

IF(CONTAINSSTRING(SELECTEDVALUE(Dim_Account[Account]), "%"), "#,##0.0 pts", "#,##0;(#,##0)")

参考<100例>2.38 数字单位的3种方案。

4 科目都是文本,按文本排序不符合要求,需要按照自定义的顺序排列。在创建科目表的时候,把序号列一并生成,然后使用按列排序功能排序。以Account_Group为例。

参考<100例>1.14 添加条件列,给维度添加排序列。

        

5 Actual用条形体现数字大小,这个用的是普通的条件格式数据条。

参考<100例>3.9 条件格式:用图标或形状制作红绿灯。

6 合计行需要统一的底色高亮显示出来。对每一个字段使用条件格式背景色,按照行标签返回颜色值,注意考虑到报表只有Account_Group不向下钻取的场景。

Color_Total = IF(SELECTEDVALUE(Dim_Account[Account]) IN {"Revenue","Cost","Gross Margin","Gross Margin%","Expense","Operating income","Operating income%","Net Income","Net Income%"} && ISINSCOPE(Dim_Account[Account]) || NOT ISINSCOPE(Dim_Account[Account]), "#EFF5FB")

参考<100例>3.10 条件格式:使用颜色度量值,实现多条件格式。

7 Δ在追踪中比较重要,因此在报表中,将其可视化为带颜色的条形,收入类正增长为绿色,支出类正增长为红色。因为颜色的特殊性,此处没有使用自带的条件格式,使用SVG矩形实现。以ΔLY为例。

Variance_LY_SVG_Bar =

VAR Pct = IF(NOT CONTAINSSTRING(SELECTEDVALUE(Dim_Account[Account]),"%"), DIVIDE(ABS([Variance_LY]), CALCULATE(MAXX(VALUES(Dim_Account[Account]),ABS([Variance_LY])), ALLSELECTED(Dim_Account)))) //度量值

VAR Width = 50 //宽度

VAR Height = 20 //高度

VAR Color = IF(SELECTEDVALUE(Dim_Account[+/-])=1, IF([Variance_LY]>=0,"#7ACA00","#FF0000"), IF([Variance_LY]>=0,"#FF0000","#7ACA00")) //根据项目类型区分不同的红绿颜色,绿色是好,红色是不好

Var Graph = IF([Variance_LY]>=0,

"<rect x='" & Width/2  & "' y='0' width='" & Width/2 *Pct  & "' height='" & Height & "' fill='" & Color &"'/>",

"<rect x='" & Width/2-Width/2 *Pct & "' y='0' width='" & Width/2 *Pct  & "' height='" & Height & "' fill='" & Color &"'/>"

)

RETURN "data:image/svg+xml;utf8, <svg xmlns='http://www.w3.org/2000/svg' width= '" & Width & "' height= '" & Height & "' >" & Graph & "</svg>"

8 Δ%的红绿色与Δ条形一致,使用颜色度量值可实现。以ΔLY%为例。

Color_Variance_LY = IF(SELECTEDVALUE(Dim_Account[+/-])=1, IF([Variance_LY]>=0,"#7ACA00","#FF0000"), IF([Variance_LY]>=0,"#FF0000","#7ACA00"))

9 通过切片器切换预算和滚动预测与实际做对比。基于B/F辅助表写一个Switch度量值,并使用新的按钮切片器融入到矩阵中。

B/F =

SWITCH(MAX('B/F'[B/F]),

    "Budget", [Budget_Full_Accounts],

    "Forecast", [Forecast_Full_Accounts]

)

10 时间段切片器可切换MTD和YTD,用计算组和时间智能函数可以实现对页面中度量值的整体控制。以YTD为例。

YTD = TOTALYTD(SELECTEDMEASURE(), Dim_Date[Date])

参考<100例>2.33 计算组用于衍生度量值、双层表头、切片器等。

设计财务损益表(Profit and Loss Statement, P&L)在Power BI中可以通过数据建模、可视化和交互式仪表板实现高效的分析与展示。以下是一个详细的指南,涵盖从数据准备到报表呈现的全过程。 ### 数据准备与建模 1. **数据源整合** Power BI支持多种数据源,例如Excel、SQL Server、Oracle、SAP等。确保将所有相关的财务数据(如收入、成本、费用、税费等)导入Power BI并进行清洗。通常建议使用“事实-维度”模型来组织数据[^1]。 2. **创建度量值** 在Power BI中使用DAX(Data Analysis Expressions)语言定义关键财务指标。例如: ```dax Total Revenue = SUM('Financial Data'[Revenue]) Cost of Goods Sold = SUM('Financial Data'[COGS]) Gross Profit = [Total Revenue] - [Cost of Goods Sold] Operating Expenses = SUM('Financial Data'[Operating Expenses]) Net Income = [Gross Profit] - [Operating Expenses] - SUM('Financial Data'[Taxes]) ``` 这些度量值可以作为损益表的核心计算单元。 3. **时间智能计算** 使用时间维度(如年、季度、月)进行同比或环比分析。例如: ```dax Revenue YoY Growth = DIVIDE( [Total Revenue] - CALCULATE([Total Revenue], SAMEPERIODLASTYEAR('Date'[Date])), CALCULATE([Total Revenue], SAMEPERIODLASTYEAR('Date'[Date])) ) ``` ### 报表设计与可视化 1. **结构化布局** 损益表应按照标准财务格式排列,通常包括以下几个部分: - 收入(Revenue) - 销售成本(COGS) - 毛利(Gross Profit) - 营运费用(Operating Expenses) - 营业利润(EBIT) - 税费(Taxes) - 净利润(Net Income) 2. **可视化组件选择** - **表格与矩阵视图**:用于展示详细的损益表结构,适合按部门、地区或产品分类查看。 - **柱状图/折线图**:用于展示收入、成本、净利润的趋势变化。 - **瀑布图(Waterfall Chart)**:适用于展示各项目对净利润的贡献。 - **KPI卡片**:显示关键财务指标(如总收入、毛利率、净利率等)。 3. **交互与钻取功能** 利用Power BI的筛选器、书签和钻取功能增强用户体验。例如,点击某一部门可深入查看其详细损益情况。 4. **颜色编码与条件格式** 为正负数值设置不同的颜色(如绿色表示盈利,红色表示亏损),提升可读性。 ### 最佳实践 - **保持一致性**:确保与公司内部的财务报告格式一致,便于比较和审计。 - **自动化更新**:通过定期刷新数据源,确保报表始终反映最新财务状况。 - **权限控制**:根据用户角色限制访问权限,保障敏感财务数据的安全性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值