Tableau中的LOOKUP函数

1. LOOKUP函数

用法:LOOKUP(expression,[offset])

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

2.实验

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

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

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

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

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

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

  • 按Country,其结果如下:

  • 按Year,其结果如下:

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

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

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

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

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

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

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

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

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

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

  • 6
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值