2016-11-15 29 views
0

精確我使用以下黑斑羚查詢從MY_TABLE提取數據:黑斑羚內置功能:UNIX_TIMESTAMP功能是不夠的

select id, timestamp, unix_timestamp(timestamp) as ts from my_table 

輸出是:

 id   timestamp    ts 
------------------------------------------------------- 
    0 A  2016-08-21 16:18:34.336  1471796314 
    1 A  2016-08-21 16:18:34.517  1471796314 
    2 A  2016-08-21 16:18:34.677  1471796314 
    3 B  2016-08-14 00:20:00.641  1471134000 
    4 B  2016-08-14 00:20:00.697  1471134000 
    5 B  2016-08-14 00:20:00.720  1471134000 
    6 B  2016-08-14 00:20:00.750  1471134000 

的轉換後的ts字段變得完全相同,因爲原始時間戳差異非常小。有沒有一種方法(一個函數)可以使ts使用更高的數字(準確性)?如果原始時間戳不同,我需要每個ts都不相同。謝謝!

回答

0

隨着最近版本帕拉的[以下警告],你應該能夠提取毫秒,重建一個更精確的時間戳。
警告 - Cloudera documentation指出millisecond()函數在CDH 5.7.0中可用,顯然不是這種情況。

SELECT Unix_Timestamp(timestamp)*1000 +Millisecond(timestamp) AS ts FROM wtf 

順便說一下,要非常小心時區。 Impala假定所有時間戳都是以UTC的形式提供的,所以如果您的數據來自多個數據中心 - 或者來自應用DST的數據中心 - 則您的精確丟失時間爲小時,而不是毫秒數......