获取所有行的总值
Getting the total value in all the rows
我正在使用下面的计算来计算 accounts >= 200
的金额总和
我遇到的问题是,当我用 excel 可视化帐户和帐户总数时,它会给出所有帐户的总金额。
我该如何解决这个问题?`
Account total:= CALCULATE(SUM('Table'[amount]),'Table'[Type]= "ABC",'Table'[account] >=200)
您应该使用:
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( 'Table', 'Table'[Type] = "ABC" && 'Table'[account] >= 200 )
)
区别在于您当前的公式等同于:
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( ALL ( 'Table' ), 'Table'[Type] = "ABC" && 'Table'[account] >= 200 )
)
即与我给出的相同,除了它在过滤之前对 table 应用(在您的情况下是隐含的)ALL
的关键区别。此隐式 ALL
将覆盖您可能在外部应用的任何过滤器。
@Jos 大部分是正确的,但有一些小错误。
这个代码
CALCULATE (
SUM ( 'Table'[amount] ),
'Table'[Type] = "ABC",
'Table'[account] >= 200
)
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( ALL ( 'Table'[Type] ), 'Table'[Type] = "ABC" ),
FILTER ( ALL ( 'Table'[account] ), 'Table'[account] >= 200 )
)
没有
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( ALL ( 'Table' ), 'Table'[Type] = "ABC" && 'Table'[account] >= 200 )
)
特别是,如果你有一个过滤器,比如说,'Table'[Category]
,这将保留在前者中但不会保留在后者中,因为 ALL ( 'Table' )
删除了所有列上的过滤器,而不是只是 [Type]
和 [account]
.
我提出以下两个几乎等效的解决方案,它们比过滤整个 table 的计算效率更高:
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( VALUES ( 'Table'[Type] ), 'Table'[Type] = "ABC" ),
FILTER ( VALUES ( 'Table'[account] ), 'Table'[account] >= 200 )
)
或
CALCULATE (
SUM ( 'Table'[amount] ),
KEEPFILTERS ( 'Table'[Type] = "ABC" ),
KEEPFILTERS ( 'Table'[account] >= 200 )
)
关于 KEEPFILTERS 的更多信息:https://www.sqlbi.com/articles/using-keepfilters-in-dax/
我正在使用下面的计算来计算 accounts >= 200
的金额总和
我遇到的问题是,当我用 excel 可视化帐户和帐户总数时,它会给出所有帐户的总金额。
我该如何解决这个问题?`
Account total:= CALCULATE(SUM('Table'[amount]),'Table'[Type]= "ABC",'Table'[account] >=200)
您应该使用:
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( 'Table', 'Table'[Type] = "ABC" && 'Table'[account] >= 200 )
)
区别在于您当前的公式等同于:
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( ALL ( 'Table' ), 'Table'[Type] = "ABC" && 'Table'[account] >= 200 )
)
即与我给出的相同,除了它在过滤之前对 table 应用(在您的情况下是隐含的)ALL
的关键区别。此隐式 ALL
将覆盖您可能在外部应用的任何过滤器。
@Jos 大部分是正确的,但有一些小错误。
这个代码
CALCULATE (
SUM ( 'Table'[amount] ),
'Table'[Type] = "ABC",
'Table'[account] >= 200
)
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( ALL ( 'Table'[Type] ), 'Table'[Type] = "ABC" ),
FILTER ( ALL ( 'Table'[account] ), 'Table'[account] >= 200 )
)
没有
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( ALL ( 'Table' ), 'Table'[Type] = "ABC" && 'Table'[account] >= 200 )
)
特别是,如果你有一个过滤器,比如说,'Table'[Category]
,这将保留在前者中但不会保留在后者中,因为 ALL ( 'Table' )
删除了所有列上的过滤器,而不是只是 [Type]
和 [account]
.
我提出以下两个几乎等效的解决方案,它们比过滤整个 table 的计算效率更高:
CALCULATE (
SUM ( 'Table'[amount] ),
FILTER ( VALUES ( 'Table'[Type] ), 'Table'[Type] = "ABC" ),
FILTER ( VALUES ( 'Table'[account] ), 'Table'[account] >= 200 )
)
或
CALCULATE (
SUM ( 'Table'[amount] ),
KEEPFILTERS ( 'Table'[Type] = "ABC" ),
KEEPFILTERS ( 'Table'[account] >= 200 )
)
关于 KEEPFILTERS 的更多信息:https://www.sqlbi.com/articles/using-keepfilters-in-dax/