Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 由另一个可由其他列拆分的变量求和,其中版本最高_Powerbi_Dax - Fatal编程技术网

Powerbi 由另一个可由其他列拆分的变量求和,其中版本最高

Powerbi 由另一个可由其他列拆分的变量求和,其中版本最高,powerbi,dax,Powerbi,Dax,继续: 我想有一个措施,将总和的价值只为最高版本的每栋房子 下面是这个示例表(数据表): 此度量的结果应该是:10.000,因为房屋id 1版本1被忽略,因为还有一个版本更高 如果有更多的版本,该措施应该只考虑每个房子的最高版本 根据House_id,结果应为(同样,House_id 1/版本1被忽略): 我还希望此度量能够在使用数据表(或相关表)的另一个变量时显示结果,但保持每户最大版本的逻辑 如示例表所示,在我有Color_Id列之前。 主表中的此颜色Id连接到包含颜色名称的颜色表 如果我添

继续:

我想有一个措施,将总和的价值只为最高版本的每栋房子

下面是这个示例表(数据表):

此度量的结果应该是:10.000,因为房屋id 1版本1被忽略,因为还有一个版本更高

如果有更多的版本,该措施应该只考虑每个房子的最高版本

根据House_id,结果应为(同样,House_id 1/版本1被忽略):

我还希望此度量能够在使用数据表(或相关表)的另一个变量时显示结果,但保持每户最大版本的逻辑

如示例表所示,在我有Color_Id列之前。 主表中的此颜色Id连接到包含颜色名称的颜色表

如果我添加一个带有ColorName(来自ColorTable)和度量值的可视表,结果应该如下所示:

|---------------------|------------------|
|      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