Tableau中的LOOKUP函数
Tableau中除了按表、区横穿纵穿进行表计算之外,还可以按照特定的维度进行表计算。
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窗口函数 |
---|---|
按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,需要设置 【计算依据】和【相对于】两个:
- 按Country,相对于Australia VS 按Country, 相对于Brazil
- 按Year, 相对于1960 VS 按Year, 相对于1961
- 先按Year 相对于1960,在按Country,相对于Australia VS 先按Country,相对于Australia,再按Year,相对于1960
在这种情况下,特定维度中设定的【相对于】直接以显示的方式提供了目标行所在的位置。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)