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窗口函數
按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

 在這種情況下,特定維度中設定的【相對於】直接以顯示的方式提供了目標行所在的位置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章