在 Power BI 中创建动态表(用于处理财务报表),并根据条件从另一个表中计算出值

问题描述 投票:0回答:1

更新2:

我有来自财务系统的组合事实表和 DIM 表来澄清行值。另一方面,我试图生成与“combined_fact_table”结构相同的第二个表,我想在其中计算我需要的所有值(大约 30k 值)。然后的想法是将计算值附加到combined_fact_table,并在Power BI Matrix视觉中加载正确的account_id。在表计算中,account_id 并不是真正的帐户 ID,而是用于识别其是否为计算的 ID。因此,从 16400 到 18200(共 100 个步骤)是用于计算的 id,之前的所有 id 都是来自财务软件的一些帐户。我认为这是一个非常愚蠢但直接解决我的需求的解决方案:D 第二种方法是为所有人制定措施计算,然后使用另一个度量在度量值或表值之间切换。最重要的是性能

更新2


更新开始8.2.24:

我更改了表格,因此您只有一个yearQuarter列,例如20191、20192、20201、20202 等等。

我知道尝试使用 Sam 建议的代码并稍作更改,但只得到空白结果:

result = 
  var thisUnitNumber = 'Fct_Calculation'[unit_number]
  var thisYearQuarter = 'Fct_Calculation'[year_quarter]
  var factFilter =
    FILTER(
      'combined_fact_tables',
      [unit_number] = thisUnitNumber &&
      [year_quarter] = thisYearQuarter
    )

  return SWITCH( 'Fct_Calculation'[account_id],
    16400,
      CALCULATE(
        SUM('combined_fact_tables'[absolute_value]),
        'combined_fact_tables'[account_id] = 100,
        factFilter
      ),

    16500,
      CALCULATE(
        SUM('combined_fact_tables'[absolute_value]),
        'combined_fact_tables'[account_id] IN {100, 200},
        factFilter
      ),

    16600,
      (
        var a3 = CALCULATE(
          SUM('combined_fact_tables'[absolute_value]),
          'combined_fact_tables'[account_id] = 300,
          factFilter
        )
        var a2 = CALCULATE(
          SUM('combined_fact_tables'[absolute_value]),
          'combined_fact_tables'[account_id] = 200,
          factFilter
        )
        return DIVIDE(a3, a2)
      )
  )

并在两个表之间建立关系将导致多对多关系。仍然感觉我走在错误的道路上,这不是最佳实践方法。对超过 30k 个单元进行测量真的是最佳实践吗? :S 每次用户更改过滤器时计算这个值似乎很奇怪。此外,对于用户来说,总是重新计算它并没有额外的价值:S

更新结束


我有一个事实表,其中包含所有单位、帐户、年度季度和类型(实际、预算、预测)的帐户余额。例如:

另一方面,我有一个表格来构建财务报表:

“计算”一栏旨在说明满足某些条件时我要计算的内容。

想要的结果如下:

我的示例主要用作占位符,以了解我如何计算,例如,帐户投资占净收入的百分比,或者偶尔汇总多个帐户,因为它们是相关的。例如,计算自由现金流(加和减法的组合)。

我不确定这是否应该在原始数据本身(在本例中为 Excel 文件)或 Power BI 中完成,如果是后者,什么会被视为最佳实践。由于财务报表是一个常见的话题,令我惊讶的是我发现或尝试的解决方案都没有达到预期的效果。有什么办法可以对不同行的不同条件进行不同的计算吗?或者这种方法本身就有缺陷?在这种情况下,常见的方法是什么?

非常感谢您的帮助<3

由于我不确定如何提出我的问题,请随时在需要时要求澄清。

powerbi finance datamodel
1个回答
0
投票

假设你有:

表:

FactTable

单位编号 四分之一 账户 ID 价值

还有

表:

Statement

单位编号 季度 盈亏位置

然后您可以将以下计算列添加到您的

Statement
表中:

result = 
  var thisU = [unit_number]
  var thisY = [year]
  var thisQ = [quarter]
  var factFilter =
    FILTER(
      'FactTable',
      [unit_number] = thisU &&
      [year] = thisY &&
      [quarter] = thisQ
    )

  return SWITCH( [p&l position],
    1,
      CALCULATE(
        SUM('FactTable'[value]),
        'FactTable'[account_id] = 1,
        factFilter
      ),

    2,
      CALCULATE(
        SUM('FactTable'[value]),
        'FactTable'[account_id] IN {1, 2},
        factFilter
      ),

    3,
      (
        var a3 = CALCULATE(
          SUM('FactTable'[value]),
          'FactTable'[account_id] = 3,
          factFilter
        )
        var a2 = CALCULATE(
          SUM('FactTable'[value]),
          'FactTable'[account_id] = 2,
          factFilter
        )
        return DIVIDE(a3, a2)
      )
  )

如果您愿意,您可以向两个表添加自定义列以进行关系连接,例如:

ID = COMBINEVALUES("-", [year], [quarter], [unit_number])

然后你可以简化上面的:

result = 
  SWITCH( [p&l position],
    1,
      CALCULATE( SUM('FactTable'[value]), 'FactTable'[account_id] = 1 ),

    2,
      CALCULATE( SUM('FactTable'[value]), 'FactTable'[account_id] IN {1, 2} ),

    3,
      (
        var a3 = CALCULATE( SUM('FactTable'[value]), 'FactTable'[account_id] = 3 )
        var a2 = CALCULATE( SUM('FactTable'[value]), 'FactTable'[account_id] = 2 )
        return DIVIDE(a3, a2)
      )
  )
© www.soinside.com 2019 - 2024. All rights reserved.