2015-07-19 30 views
-3

我有一個數據集,其中包含一個帶有時間戳數組的列和一個只有一個時間戳的列。我正在尋找使用c1時間戳作爲越來越小的條件的數組大小。蜂房中有條件參數的數組的大小

表(MY_TABLE):

c1 |   c2   | 
----------------------------| 
4 | [1,2,3,4,5,6,7,8,9,10] | 
1 | [1,2,3,4,5,6,7,8,9,10] | 
5 | [1,2,3,4,5,6,7,8,9,10] | 
3 | [1,2,3,4,5,6,7,8,9,10] | 

查詢:

select 
c1, 
c2, 
size(some_udf_split_on_c1(sort_array(<array>), c1)[1]) AS smaller_than_c1 
size(some_udf_split_on_c1(sort_array(<array>), c1)[2]) AS larger_than_c1 

from my_table 

的UDF的有我的推測執行。

輸出:

c1 |   c2   | smaller_than_c1 | larger_than_c1 
----------------------------|-----------------|--------------- 
4 | [1,2,3,4,5,6,7,8,9,10] |  3  |  6 
1 | [1,2,3,4,5,6,7,8,9,10] |  0  |  9 
5 | [1,2,3,4,5,6,7,8,9,10] |  4  |  5 
3 | [1,2,3,4,5,6,7,8,9,10] |  1  |  8  
+0

你的代碼在哪裏? – ganeshvjy

+0

我有沒有代碼功能,我正在尋求幫助。你真的需要我寫簡單的選擇語句嗎? – moku

+0

我在以非常傳統的堆棧溢出方式詢問如何完成這項任務。如果它需要一個自定義的udf,所有人需要做的就是說「那需要編寫一個自定義的udf」。如果現有的udf可以完成這項任務,只需將我指向這些udf就會有所幫助。關於幫助他人分享信息和專業知識是不是堆棧溢出問題。 @ GoBrewers14不確定你的建設性貢獻GaneshThiagarajan如何幫助改善職位。 – moku

回答

0

一個UDF將是你在找什麼的最快路徑。使用explode和group bys的組合可能會做到這一點,但與10行UDF代碼相比,您只需編寫UDF就會更快樂。