美文网首页DAX从入门到精通
DAX从入门到精通 5-3-2 上下文转换后,还有多少行是可见的

DAX从入门到精通 5-3-2 上下文转换后,还有多少行是可见的

作者: PowerBI入门到实践 | 来源:发表于2019-08-08 22:12 被阅读0次

    上下文转换,把当前的行上下文自动转换为等效的筛选上下文。这里我们详细说下,行上下文总是只有一个行,而calculate转换后得出的筛选上下文就可有可能包含多个行了,并且calculate的筛选条件也可能影响多个列,这个依据表结构的不同而定。

    如果模型中,对表定义了主键,那么calculate建立的筛选上下文只包含主键,事实上,这样的筛选上下文结果就只有一行,由主键唯一的确认。还有一个点要提示一下,主键的定义方式,不仅可以由表元数据定义,也可以在关系中把表作为目标表而定义。两种方式下,上下文转换只会过滤一个单一的列,因为该列都是唯一值,所以结果就是只有唯一的一行。

    如果表没有主键,那么上下文转换生成的筛选条件会作用于所有的列。这个筛选结果根据表结构的不同,可能会包含多个行。这样如果所有的行都是不同的,那么筛选的结果就是唯一行,而如果表格里面由相同的行,那么,这些重复行都会在筛选的结果里面。.

    下面的例子中,分别返回正确和错误的结果。

    [Sales Amount] := SUMX ( Sales, Sales[Quantity] * Sales[Unit
    Price] )
    [Wrong Sales] := SUMX ( Sales, [Sales Amount] )
    [Correct Sales] := SUMX ( Sales, Sales[Quantity] * Sales[Unit
    Price] )
    

    事实上,wrong sales迭代了整个sales表,对于每一行,sales amount计算所有筛选出来的行。而correct sales计算了表中的每一行。作为结果,如果sales有多个行相同,wrong sales会返回的结果会更多。

    当我们针对的是维度表的时候,这个不是问题,因为维度表中都有个主键。这情况下,每行都是唯一的行。但是在事实表中,如果表没有主键,那么你要仔细考虑一下,是否有重复的行。否则你可能会返回非预期的值。

    相关文章

      网友评论

        本文标题:DAX从入门到精通 5-3-2 上下文转换后,还有多少行是可见的

        本文链接:https://www.haomeiwen.com/subject/iwzfjctx.html