Financial Reporting in Power BI: P&L, Balance Sheet, Cash Flow

Build complete financial statements in Power BI — Profit & Loss, Balance Sheet, and Cash Flow waterfall — with DAX time intelligence formulas and CFO-ready dashboard design.

E
ECOSIRE Research and Development Team
|2026年3月19日6 分钟阅读1.3k 字数|

Power BI 中的财务报告:损益表、资产负债表、现金流量

使用 Power BI 仪表板替换静态 Excel 财务包的首席财务官表示,月末结算报告时间减少了 60-80%。原因是:他们不再手动组装损益表、格式化资产负债表和通过电子邮件发送 PDF,而是一次发布,每个利益相关者(董事会成员、部门负责人、投资者)都会看到过滤到其相关视图的实时数据。

在 Power BI 中构建财务报表在架构上与构建销售或运营仪表板不同。财务报表需要精确的账户映射、精确到分的期间比较以及审计跟踪透明度。本指南展示了完整的实现:数据模型、账户分类、损益表结构、资产负债表可视化、现金流瀑布以及使其发挥作用的 DAX 时间智能公式。

要点

  • 财务报告需要总账交易级数据模型(不是预先汇总的报告摘录)
  • 账户分类表将账户图表映射到损益表/资产负债表/现金流量类别
  • 具有计算列的矩阵视觉效果是语句格式的最佳 Power BI 视觉效果
  • 时间智能:DATESYTD、SAMEPERIODLASTYEAR 和 PARALLELPERIOD 处理所有周期比较
  • 现金流量表采用间接法:净利润→营运资本调整→营业CF
  • 差异分析措施(实际与预算)对于管理报告至关重要
  • 辅助维度上的行级安全性控制每个读者看到的实体
  • 分页报告(Power BI Report Builder)将像素完美的报表导出为 PDF 以用于板包

财务报告的数据模型

核心表

GL_Transactions(事实表 - 每个日记帐分录行一行):

专栏类型描述
代码0文字日记帐分录或交易编号
代码0国际交易内的行号
代码0文字FK 转会计科目表
代码0日期交易日期
代码0日期发布到 GL 的日期
代码0文字财政期间(例如“2026-03”)
代码0十进制借方金额(正)
代码0十进制信用金额(正)
代码0十进制借记-贷记
代码0文字FK 至子公司
代码0文字FK 至部门
代码0文字FK 到项目(可选)
代码0文字交易备忘录

账户图表(维度):

专栏描述
代码0内部账户代码
代码0显示帐号
代码0账户名
代码0资产、负债、权益、收入、支出
代码0流动资产、固定资产、销货成本、营业费用等
代码0损益表、资产负债表或现金流量
代码0收入、销货成本、毛利润、运营费用、EBITDA、净利润
代码0流动资产、固定资产、流动负债、长期负债、权益
代码0运营、投资、融资
代码0对于定制报表订购
代码0对于层次结构汇总
代码0淘汰条目标记

预算(可选事实表):

专栏描述
代码0FK 转会计科目表
代码0财政期间
代码0预算金额
代码0预算、预测、修订
代码0FK 至子公司

损益表结构

损益账户分类

损益部分结构应将您的会计科目表映射到标准损益类别:

Revenue
  - Product Revenue
  - Service Revenue
  - Other Revenue
Cost of Goods Sold
  - Product COGS
  - Direct Labor
  - Manufacturing Overhead
= Gross Profit
Operating Expenses
  - Sales & Marketing
  - General & Administrative
  - Research & Development
  - Depreciation & Amortization
= EBITDA / Operating Income
Other Income / Expense
  - Interest Income
  - Interest Expense
  - Foreign Exchange
= Net Income Before Tax
  - Income Tax Expense
= Net Income

DAX 损益指标

// Core GL amount measure (handles sign convention)
GL Amount =
SUMX(
    GL_Transactions,
    SWITCH(
        RELATED(Chart_of_Accounts[AccountType]),
        "Revenue", GL_Transactions[CreditAmount] - GL_Transactions[DebitAmount],
        "Expense", GL_Transactions[DebitAmount] - GL_Transactions[CreditAmount],
        "Asset", GL_Transactions[DebitAmount] - GL_Transactions[CreditAmount],
        "Liability", GL_Transactions[CreditAmount] - GL_Transactions[DebitAmount],
        "Equity", GL_Transactions[CreditAmount] - GL_Transactions[DebitAmount],
        GL_Transactions[NetAmount]
    )
)

// Revenue
Total Revenue =
CALCULATE([GL Amount], Chart_of_Accounts[PLSection] = "Revenue")

// COGS
Total COGS =
CALCULATE([GL Amount], Chart_of_Accounts[PLSection] = "COGS")

// Gross Profit
Gross Profit = [Total Revenue] - [Total COGS]

// Gross Margin %
Gross Margin % = DIVIDE([Gross Profit], [Total Revenue], 0)

// Operating Expenses
Total OpEx =
CALCULATE([GL Amount], Chart_of_Accounts[PLSection] = "Operating Expense")

// EBITDA
EBITDA = [Gross Profit] - [Total OpEx]

// D&A (addback for EBITDA from EBIT)
DA Addback =
CALCULATE(
    [GL Amount],
    Chart_of_Accounts[AccountName] IN {"Depreciation", "Amortization"}
)

// Net Income
Net Income =
[EBITDA] +
CALCULATE([GL Amount], Chart_of_Accounts[PLSection] = "Other Income/Expense") -
CALCULATE([GL Amount], Chart_of_Accounts[PLSection] = "Tax Expense")

损益时间智能

// Prior Year same period
PY Revenue = CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(Date[Date]))

// YTD Revenue
YTD Revenue = CALCULATE([Total Revenue], DATESYTD(Date[Date]))

// Prior YTD Revenue
PY YTD Revenue = CALCULATE([YTD Revenue], SAMEPERIODLASTYEAR(Date[Date]))

// Budget Variance
Revenue Budget Variance =
[Total Revenue] -
CALCULATE(SUM(Budget[BudgetAmount]), Budget[ScenarioID] = "Budget")

// Budget Variance %
Revenue Budget Var % =
DIVIDE([Revenue Budget Variance],
    CALCULATE(SUM(Budget[BudgetAmount]), Budget[ScenarioID] = "Budget"), 0)

// Rolling 12-Month Revenue
R12M Revenue =
CALCULATE(
    [Total Revenue],
    DATESINPERIOD(Date[Date], LASTDATE(Date[Date]), -12, MONTH)
)

损益矩阵视觉设计

损益表的推荐视觉效果是矩阵:

  • :损益行项目(来自 Chart_of_Accounts[PLSection] 带小计)
  • :期间(月、季度、年初至今)
  • :实际金额、预算金额、差异 $、差异 %

配置矩阵:

  1. 启用部分级别的小计(收入总额、销货成本总额等)
  2. 使用条件格式:红色 = 不利方差,绿色 = 有利方差
  3. 通过 Chart_of_Accounts[SortOrder] 应用自定义排序顺序
  4. 数字格式:£#,##0K 表示千位,0.0% 表示百分比

资产负债表可视化

资产负债表结构

Assets
  Current Assets
    - Cash and Equivalents
    - Accounts Receivable
    - Inventory
    - Prepaid Expenses
  Fixed Assets
    - Property, Plant & Equipment (net)
    - Intangible Assets
    - Goodwill
= Total Assets

Liabilities
  Current Liabilities
    - Accounts Payable
    - Accrued Expenses
    - Deferred Revenue
    - Short-term Debt
  Long-term Liabilities
    - Long-term Debt
    - Deferred Tax
= Total Liabilities

Equity
  - Common Stock
  - Retained Earnings
  - Additional Paid-In Capital
= Total Equity
= Total Liabilities + Equity

资产负债表 DAX 指标

资产负债表计量使用余额(累计)而不是期间金额 - 从开始到选定日期的所有交易:

// Balance Sheet uses cumulative amounts (not period totals)
BS Amount =
CALCULATE(
    [GL Amount],
    FILTER(
        ALL(Date),
        Date[Date] <= MAX(Date[Date])
    )
)

// Total Current Assets
Current Assets =
CALCULATE([BS Amount], Chart_of_Accounts[BSSection] = "Current Assets")

// Total Fixed Assets (net of depreciation)
Fixed Assets =
CALCULATE([BS Amount], Chart_of_Accounts[BSSection] = "Fixed Assets")

// Total Assets
Total Assets = [Current Assets] + [Fixed Assets]

// Total Current Liabilities
Current Liabilities =
CALCULATE([BS Amount], Chart_of_Accounts[BSSection] = "Current Liabilities")

// Total Equity
Total Equity =
CALCULATE([BS Amount], Chart_of_Accounts[BSSection] = "Equity")

// Balance Sheet Check (must equal 0 for a balanced BS)
BS Balance Check =
[Total Assets] - ([Current Liabilities] +
    CALCULATE([BS Amount], Chart_of_Accounts[BSSection] = "Long-term Liabilities") +
    [Total Equity])

// Key Ratios
Current Ratio = DIVIDE([Current Assets], [Current Liabilities], 0)
Quick Ratio =
DIVIDE(
    [Current Assets] -
    CALCULATE([BS Amount], Chart_of_Accounts[AccountSubType] = "Inventory"),
    [Current Liabilities],
    0
)
Debt to Equity = DIVIDE([Current Liabilities], [Total Equity], 0)

资产负债表可视化模式

使用视觉效果的组合:

  1. 完整资产负债表的矩阵(与损益矩阵结构相同)
  2. 资产 vs 负债 + 权益的堆积条形图(12 个月内的趋势)
  3. 流动比率、速动比率、债务/权益的 KPI 卡
  4. 营运资金与目标的衡量标准

现金流量表(间接法)

间接法从净利润开始,并根据非现金项目和营运资本变化进行调整。

Operating Activities:
  + Net Income
  + Depreciation & Amortization
  + / - Changes in Working Capital:
    + Decrease / - Increase in Accounts Receivable
    + Decrease / - Increase in Inventory
    - Decrease / + Increase in Accounts Payable
    - Decrease / + Increase in Accrued Expenses
= Net Cash from Operations

Investing Activities:
  - Capital Expenditures (PP&E additions)
  + Proceeds from Asset Sales
= Net Cash from Investing

Financing Activities:
  + Debt Proceeds
  - Debt Repayments
  - Dividends Paid
  + Equity Raised
= Net Cash from Financing

= Net Change in Cash
+ Beginning Cash Balance
= Ending Cash Balance

现金流量 DAX 指标

// Period-over-Period change in Accounts Receivable
AR Change =
VAR CurrentAR = CALCULATE([BS Amount], Chart_of_Accounts[AccountSubType] = "Accounts Receivable")
VAR PriorAR = CALCULATE(
    [BS Amount],
    Chart_of_Accounts[AccountSubType] = "Accounts Receivable",
    DATEADD(Date[Date], -1, MONTH)
)
RETURN PriorAR - CurrentAR  // Decrease in AR = positive cash impact

// Change in Inventory
Inventory Change =
VAR CurrentInv = CALCULATE([BS Amount], Chart_of_Accounts[AccountSubType] = "Inventory")
VAR PriorInv = CALCULATE([BS Amount], Chart_of_Accounts[AccountSubType] = "Inventory",
    DATEADD(Date[Date], -1, MONTH))
RETURN PriorInv - CurrentInv

// Capital Expenditures (negative — cash outflow)
CapEx =
-CALCULATE(
    [GL Amount],
    Chart_of_Accounts[AccountSubType] = "Fixed Asset Addition",
    Chart_of_Accounts[CFSection] = "Investing"
)

// Net Cash from Operations
Operating Cash Flow =
[Net Income] +
[DA Addback] +
[AR Change] +
[Inventory Change] +
CALCULATE([GL Amount], Chart_of_Accounts[AccountSubType] = "Accounts Payable Change")

// Free Cash Flow
Free Cash Flow = [Operating Cash Flow] + [CapEx]

现金流量瀑布图

瀑布图是现金流量的理想视觉效果:

  1. 创建一个计算表,其中包含现金流量行项目及其金额 2.使用瀑布图视觉效果(内置于Power BI中) 3.配置“增加”和“减少”类别,显示每一项的贡献
  2. 将“运营净现金”、“投资净现金”、“融资净现金”标记为小计
  3. 将“期末现金余额”标记为总计

方差分析:实际 vs 预算 vs 预测

// Scenario selector (works with a scenario slicer)
Selected Measure =
SWITCH(
    SELECTEDVALUE(Scenario[Scenario]),
    "Budget", SUM(Budget[Amount]),
    "Forecast", CALCULATE(SUM(Budget[Amount]), Budget[ScenarioID] = "Q2 Forecast"),
    [Total Revenue]  -- default to Actual
)

// Traffic light variance
Variance Status =
VAR Var% = [Revenue Budget Var %]
RETURN
SWITCH(TRUE(),
    Var% >= 0.05, "Favorable",
    Var% >= -0.05, "On Track",
    "Unfavorable"
)

常见问题

Power BI 能否取代我们现有的 ERP 财务报告模块?

Power BI 可以用更灵活的交互式等价物取代大多数标准财务报告(损益表、资产负债表、现金流量、AR 账龄)。然而,法定财务报表(经 GAAP/IFRS 认证)、带签名控制的审计就绪报告以及交易过账功能仍保留在 ERP 中。最佳方法:使用 ERP 进行事务控制和合规性,使用 Power BI 进行管理报告和董事会级分析。

如何确保 Power BI 中的损益表与 ERP 完全匹配?

最常见的对账问题是符号约定 - ERP 定义收入帐户是否具有贷方或借方正常余额,而 Power BI 必须应用相同的逻辑。构建一个测试度量,对所有 GL 条目(借方 + 贷方)进行求和,并验证其在关闭期间等于 0。然后将您的损益总额与 ERP 的本机损益报告逐个期间进行比较,直至匹配。

是否可以将多个子公司合并到一份 Power BI 财务报告中?

是的 - 这是 Power BI 相对于许多 ERP 财务报告模块的主要优势之一。使用 SubsidiaryID 列从所有子公司导入 GL 数据,然后构建跨子公司求和的合并度量。对于公司间抵销,在会计科目表中标记公司间科目并将其从合并计量中排除。货币换算需要将汇率表连接到交易日期。

如何从 Power BI 创建板包质量的 PDF 报告?

Power BI Report Builder(分页报告)可创建像素完美的 PDF 输出 - 专业格式、分页符、页眉/页脚和精确的表格布局。它与 Power BI Desktop 分开,但使用相同的数据集。对于董事会包,在 Word 中构建管理评论,通过分页报告生成财务表格,并通过 Power Automate 按月计划合并。分页报告需要 Power BI Premium 或 PPU 许可证。

处理与日历年度不匹配的会计年度的最佳方法是什么?

在 DAX 或 Power Query 中创建自定义日期表,其中包含基于会计年度开始月份的 FiscalYear、FiscalQuarter 和 FiscalPeriod 列。在 Power BI 中将此表标记为日期表。将 DATESYTD 与会计年度结束日期参数结合使用:CALCULATE([Revenue], DATESYTD(Date[Date], "3/31")) 表示三月会计年度结束。所有时间智能功能都接受这个可选的年终参数。


后续步骤

Power BI 中的财务报告需要比操作仪表板更仔细的数据建模 - 帐户签名约定、资产负债表累积逻辑和现金流量间接方法计算都需要精确实施。如果操作正确,CFO 仪表板可以用几分钟的探索取代数周的 Excel 工作。

ECOSIRE 将 Power BI 专业知识与深厚的会计和财务知识相结合。我们的Power BI 仪表板开发服务 包括完整的财务报表设计,我们的会计服务 涵盖数据质量和科目表结构,使财务仪表板变得可靠。

联系我们的财务分析团队 讨论您的财务报告要求并设计 Power BI 架构,为您的领导团队提供所需的财务可见性。

E

作者

ECOSIRE Research and Development Team

在 ECOSIRE 构建企业级数字产品。分享关于 Odoo 集成、电商自动化和 AI 驱动商业解决方案的洞见。

通过 WhatsApp 聊天