他们以后的该文有写过EARLIER表达式系统化排序囗差
,在这篇该文中详尽如是说了是不是采用EARLIER表达式排序相同情景下的囗差。归纳如下表所示:
这儿的突破点是怎样将总体向下终端带队,依照以内的路子他们下列鞍斑例:
想明确要求每一Id的问和答间的极大值,只不过也是先依照Id和年份列展开次序,接着将总体向下终端带队获得新列,再将一列相乘获得。依照以后该文的方式式子如下表所示:
序列号1 =
RANKX(
FILTER(表1,
表1[Id] = EARLIER(表1[Id])
),
表1[年份]
)
发问年份1 =
SUMX(
FILTER(表1,
表1[Id] = EARLIER(表1[Id]) && 表1[序列号1]= EARLIER(表1[序列号1])+1
),
表1[年份]
)
概要极大值1 =
DATEDIFF(表1[发问年份1],表1[年份],DAY)
这儿须要追加一列值才能展开排序,是不是单纯的读法,他们以后的该文两个Earlier表达式的代替计划 – Var表达式,这儿他们紫菊采用VAR表达式怎样同时实现。他们先展开次序:
序列号2 =
VAR X = 表1[Id]
RETURN
RANKX(FILTER(表1,表1[Id]= X) ,表1[年份])
接著他们展开第三步,将总体向下提带队,标识符如下表所示:
发问年份2 =
VAR X = 表1[Id]
VAR Y = 表1[序列号1]
RETURN SUMX(FILTER(表1,表1[Id]=X &&表1[序列号1]= Y+1),表1[年份])
最后第三步排序差值:
问答极大值2 =
DATEDIFF(表1[发问年份2],表1[年份],DAY)
下图中他们看到两种方式的结果都是一样的:
如果还是这样来做的话,是起不到简化作用的,那他们是不是可能写成两个步骤来排序?他们来紫菊,将三个步骤标识符写成两个,如下表所示所示:
概要极大值3 =
VAR A = 表1[Id]
VAR B = RANKX(FILTER(表1,表1[Id]= A) ,表1[年份])
VAR C = SUMX(FILTER(表1,表1[Id]= A && B = B+1),表1[年份])
RETURN
DATEDIFF(C,表1[年份],DAY)
如下表所示图可以看到,他们看下结果:
结果是空值,原因是什么呢?
这儿他们可以看到他们将表1[序列号1]的部分都替换成了变量B,标识符就成了B = B+1,只不过错误原因是这儿,这儿的VAR是Variables的简写,指的是变量,但是VAR定义了两个变量之后,结果就不变了,而等号前的B是须要每行迭代排序的,如果他们将等号前的B固定了,结果就出错了。
正确的读法如下表所示:
概要极大值4 =
VAR A = 表1[Id]
VAR B = 表1[序列号2]
VAR C = SUMX(FILTER(表1,表1[Id]= A && 表1[序列号2] = B+1),表1[年份])
RETURN
DATEDIFF(C,表1[年份],DAY)
他们还可以换种读法:
概要极大值5 =
VAR A = 表1[Id]
VAR C = VAR B = 表1[序列号2]
RETURN
SUMX(FILTER(表1,表1[Id]= A && 表1[序列号2] = B+1),表1[年份])
RETURN
DATEDIFF(C,表1[年份],DAY)
结果如下表所示:
他们可以看到,上述概要极大值4和5结果是一致的,说明VAR表达式是可以嵌套采用的。这儿采用VAR表达式是定义了两个变量,在之后的定义中或者返回值可以多次重复调用,而定义变量是须要返回结果的,通过RETURN返回值,在这儿采用VAR的好处的是简化了标识符,减少了数据冗余,但是也要注意有些地方是不能采用VAR变量的,具体情景须要在采用过程中自行体会。
~
*PowerPivot工坊原创该文,转载请注明出处!
延伸阅读:
中国电影票房分析
当Power BI遇上投资分析
Power BI销售分析案例
当Power BI遇上妇儿医院
当Power BI 遇上洪灾
当Power BI 遇上Visio
当Power BI 遇上欧冠决赛
当Power BI遇上条形码
当PowerBI遇上恐怖主义
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习他们的“从Exce