excel-formula - 如何在PowerBI中执行同一列的先前单元格的总和
解决方案
在 DAX 中没有进行相对行引用的固有方法,因此您需要明确告诉它要引用哪一行。
CalculatedColumn =
VAR PrevDate =
MAXX (
FILTER ( Table1, Table1[Date] < EARLIER ( Table1[Date] ) ),
Table1[Date]
)
VAR B = LOOKUPVALUE ( Table1[B], Table1[Date], PrevDate )
VAR C = LOOKUPVALUE ( Table1[C], Table1[Date], PrevDate )
RETURN
( 1 - 0.2 ) * B + 0.2 * C
编辑:
由于您已经澄清您希望引用您定义的同一列,因此我知道如何做到这一点的唯一方法是创建一个要使用的封闭式公式,如我在此处的回答中所示。
与递归关系
C_(n+1) = 0.8 * B_n + 0.2 * C_n
我们可以将其重写C_1
如下:
C_n = 0.8 * ( sum_(i=1)^(n-1) ( B_i * 0.2^(n-i-1) ) ) + 0.2^(n-1) * C_1
在这里,整个C
列仅依赖于 columnB
和一个初始值C_1 = 8320
,即该B
列中的第一项。
现在我们可以用一点 DAX Magic 把它变成一个计算列:
ColumnC =
VAR C1 = MAXX ( TOPN ( 1, TableN, TableN[Date], ASC ), [B] )
VAR N = RANK.EQ ( [Date], TableN[Date], ASC )
VAR SumTable =
ADDCOLUMNS (
FILTER (
SELECTCOLUMNS (
TableN,
"i", RANK.EQ ( [Date], TableN[Date], ASC ),
"B_i", [B]
),
[i] <= N - 1
),
"B_i Term", POWER ( 0.2, N - [i] - 1 ) * [B_i]
)
RETURN
IF (
N > 1,
0.8 * SUMX ( SumTable, [B_i Term] ) + POWER ( 0.2, N - 1 ) * C1,
0
)
推荐阅读
- python - Discord 机器人命令不起作用(Python)
- laravel - 尝试安装 laravel 时出错(找不到代客命令)
- sapui5 - 如何在 Fiori 应用程序中设置支持的语言?
- macos - 通过键盘快捷键运行 rsync 的权限问题
- spring-boot - 春季 JPA。如何使用@Query 仅获取 ID 列表
- sql - NoSQL 数据库的工作方式与其中包含序列化对象的 SQL 表不同吗?
- cmake - 在 FreeBSD 12 和 Debian 10 上编译 c2ffi 的困难
- flutter - flutter_webview 无法显示具有三个.js 渲染的网页
- c# - 带有 System.Data.SqlClient 的 PlatformNotSupportedException
- c# - C# XML Serializer 无法反序列化摄氏度符号