行上下文标识当前行,仅仅用于迭代,不会筛选任何数据,也不会自动利用关系。在当前的行上下文中,可以通过RELATED 和 RELATEDTABLE函数利用关系,以获取相关联表中得数据。行上下文存在于计算列或迭代函数中,没有其他方法可以创建行上下文,计算列和迭代函数会自动创建行上下文。
一,迭代函数执行迭代的过程
迭代函数对数据表执行迭代计算的过程分为两步:
第一步:过滤数据,SUMX的第一个参数是表Sales,该表受到到筛选上下文的影响,只返回过滤之后的数据行,以确定要迭代(逐行扫描)的表的范围;
第二步:执行迭代计算,SUMX的第二个参数是一个表达式 Sales[Net Price] * Sales[Discount],该表达式处于行上下文中,也就是说Sales[Net Price] 和 Sales[Discount]是同一行中的不同列,SUMX逐行计算表达式的值,并把所有的值加起来作为函数的返回值。
Sales = SUMX( Sales, Sales[Net Price] * Sales[Discount])
注意:最容易误解的一个函数是FILTER函数,它是一个迭代函数,不会修改筛选上下文,该函数受到筛选上下文的影响,并根据条件返回数据的子集。
二,行上下文和关系
在迭代过程中,行上