Tableau中的LOOKUP函数

1. LOOKUP函数

用法:LOOKUP(expression,[offset])

说明:返回距离当前行offset偏移量的目标行中的表达式的值。使用FIRST()+n或LAST()-n作为偏移量时则返回距离分区第一行或最后一行n个偏移量的目标行的表达式的值。若不使用FIRST()或LAST()时,则返回距离当前行n个偏移量的目标行的表达式的值。如果没有输入offset参数,则这个时候计算依据只能使用特定维度

2.实验

创建三个LOOKUP计算字段,分别设置不同的offset。 本次实验中使用到的初始数据如下:

Tableau中的LOOKUP函数_第1张图片

 具体地,三个LOOKUP计算字段如下:

Tableau中的LOOKUP函数_第2张图片

Tableau中的LOOKUP函数_第3张图片

Tableau中的LOOKUP函数_第4张图片

1) 将value_next和value_next_1计算依据设置为【表向下】,其计算结果如下:

Tableau中的LOOKUP函数_第5张图片

2) 将value_next和value_next_1的计算依据设置为【区向下】,其计算结果为:

Tableau中的LOOKUP函数_第6张图片

 对比这两个实验结果可以发现,在LOOKUP函数中加入FIRST()之后,目标行就固定不变了,不会随着当前行的改变而改变。

3) 对value_next和value_next_1设置特定维度表计算

  • 按Country,其结果如下:

Tableau中的LOOKUP函数_第7张图片

  • 按Year,其结果如下:

Tableau中的LOOKUP函数_第8张图片

  • 先按Year,再按Country(设置位置:右击字段名,然后【编辑表计算】,选择【特定维度】)。其计算结果如下:

Tableau中的LOOKUP函数_第9张图片

  • 先按Country, 再按Year,其计算结果如下:

Tableau中的LOOKUP函数_第10张图片

LOOKUP函数所要实现的功能和SQL中的窗口函数基本相同。因为我对窗口函数比较熟悉,所以这里就打算将上述4个结果用SQL的窗口函数来实现。(MySQL中的窗口函数可以参https://blog.csdn.net/yeshang_lady/article/details/102728513 )  。对于value_next,具体如下:

LOOKUP函数 SQL窗口函数
按Country Lead(sum([GDP]),1)OVER(partition by Year order by Country)
按Year Lead(sum([GDP]),1)OVER(partition by Country order by Year)
先按Country, 再按Year Lead(sum([GDP]),1)OVER(order by Country, Year)
先按Year,再按Country Lead(sum([GDP]),1)OVER(order by Year, Country)

value_next_1所对应的窗口函数与value_next基本相同,只不过value_next_1对应的目标行是固定的。从以上的对应关系可以看出,在LOOKUP函数中设定的特定维度提供了排序依据。

4) 对于value_next_2,需要设置 【计算依据】和【相对于】两个:

Tableau中的LOOKUP函数_第11张图片

  •  按Country,相对于Australia VS 按Country, 相对于Brazil

Tableau中的LOOKUP函数_第12张图片

  • 按Year, 相对于1960 VS 按Year, 相对于1961

Tableau中的LOOKUP函数_第13张图片

  • 先按Year 相对于1960,在按Country,相对于Australia VS 先按Country,相对于Australia,再按Year,相对于1960

Tableau中的LOOKUP函数_第14张图片

 在这种情况下,特定维度中设定的【相对于】直接以显示的方式提供了目标行所在的位置。

你可能感兴趣的:(Tableau)