Powerbi 由另一个可由其他列拆分的变量求和,其中版本最高
继续: 我想有一个措施,将总和的价值只为最高版本的每栋房子 下面是这个示例表(数据表): 此度量的结果应该是:10.000,因为房屋id 1版本1被忽略,因为还有一个版本更高 如果有更多的版本,该措施应该只考虑每个房子的最高版本 根据House_id,结果应为(同样,House_id 1/版本1被忽略): 我还希望此度量能够在使用数据表(或相关表)的另一个变量时显示结果,但保持每户最大版本的逻辑 如示例表所示,在我有Color_Id列之前。 主表中的此颜色Id连接到包含颜色名称的颜色表 如果我添加一个带有ColorName(来自ColorTable)和度量值的可视表,结果应该如下所示:Powerbi 由另一个可由其他列拆分的变量求和,其中版本最高,powerbi,dax,Powerbi,Dax,继续: 我想有一个措施,将总和的价值只为最高版本的每栋房子 下面是这个示例表(数据表): 此度量的结果应该是:10.000,因为房屋id 1版本1被忽略,因为还有一个版本更高 如果有更多的版本,该措施应该只考虑每个房子的最高版本 根据House_id,结果应为(同样,House_id 1/版本1被忽略): 我还希望此度量能够在使用数据表(或相关表)的另一个变量时显示结果,但保持每户最大版本的逻辑 如示例表所示,在我有Color_Id列之前。 主表中的此颜色Id连接到包含颜色名称的颜色表 如果我添
|---------------------|------------------|
| ColorName | Value |
|---------------------|------------------|
| Green | 8000 |
|---------------------|------------------|
| Red | 2000 |
|---------------------|------------------|
| Total | 10000 |
|---------------------|------------------|
使用中提供的解决方案,结果在总行上是正确的,但是错误的,因为它没有显示每个颜色的正确值。
下表是在提供的问题中应用测量的结果(错误结果):
|---------------------|------------------|
|ColorName |值|
|---------------------|------------------|
|绿色| 9000 |在中,问题在于第一个变量
Sum of Latest Values =
VAR Latest_Versions =
SUMMARIZE ( Data, Data[House_id], "Latest_Version", MAX ( Data[Version_Id] ) )
VAR Latest_Values =
TREATAS ( Latest_Versions, Data[House_id], Data[Version_Id] )
VAR Result =
CALCULATE ( SUM ( Data[Value] ), Latest_Values )
RETURN Result
Data
表作为summary
中的第一个参数不是整个表,而是在本地筛选器上下文中进行计算的。这意味着当您在表中的绿色
行中时,它看不到版本_ID=2
,因此在绿色
行中包括第一个版本,但不包括总数(它可以看到所有行)
修复非常简单——从第一个表参数中删除本地筛选器上下文。一种方法是使用ALL(Data)
而不仅仅是Data
。但这可能不是最有效的内存,您可能更喜欢这样写:
Sum of Latest Values =
VAR Latest_Versions =
ADDCOLUMNS (
VALUES ( Data[House_Id] ),
"Latest_Version",
CALCULATE ( MAX ( Data[Version_Id] ), ALLEXCEPT ( Data, Data[House_Id] ) )
)
VAR Latest_Values =
TREATAS ( Latest_Versions, Data[House_id], Data[Version_Id] )
VAR Result =
CALCULATE ( SUM ( Data[Value] ), Latest_Values )
RETURN
Result
嗨,谢谢你的回复。不幸的是,与@RADO给出的答案相比,这两个更改并没有产生任何改进。在摘要中添加所有(数据)不会产生任何效果。此外,优化后的度量值显示总行的值正确,但每种颜色的值不正确。它显示绿色9000。我在我的机器上复制了你的例子,它肯定是双向的。问题中一定有你没有具体说明的事情。好了,亚历克西斯,我找到了问题的原因。使用DirectQuery连接数据表。如果我使用导入模式,那么所有操作都会按预期进行。如何使用DirectQuery解决此问题?我不确定是否可能。
|---------------------|------------------|
| ColorName | Value |
|---------------------|------------------|
| Green | 9000 | <- Error Here
|---------------------|------------------|
| Red | 2000 |
|---------------------|------------------|
| Total | 10000 |
|---------------------|------------------|
Sum of Latest Values =
VAR Latest_Versions =
SUMMARIZE ( Data, Data[House_id], "Latest_Version", MAX ( Data[Version_Id] ) )
VAR Latest_Values =
TREATAS ( Latest_Versions, Data[House_id], Data[Version_Id] )
VAR Result =
CALCULATE ( SUM ( Data[Value] ), Latest_Values )
RETURN Result
Sum of Latest Values =
VAR Latest_Versions =
ADDCOLUMNS (
VALUES ( Data[House_Id] ),
"Latest_Version",
CALCULATE ( MAX ( Data[Version_Id] ), ALLEXCEPT ( Data, Data[House_Id] ) )
)
VAR Latest_Values =
TREATAS ( Latest_Versions, Data[House_id], Data[Version_Id] )
VAR Result =
CALCULATE ( SUM ( Data[Value] ), Latest_Values )
RETURN
Result