取消
顯示的結果
而不是尋找
你的意思是:

我如何添加一個時間在毫秒時間戳?

Merchiv
新的貢獻者三世

假設有一個DataFrame時間戳和一個偏移量分別列以毫秒為單位的時間戳和長格式。

如。

從datetime進口datetime df =火花。createDataFrame ([datetime(2021、1、1), 1500年),(datetime(2021、1、2), 1200年)],[“時間戳”、“offsetmillis”],)

現在我想將這些偏移量添加到datetime,所以我得到:

2021 - 01 - 01 - t00:00:01.500和2021 - 01 - 0 - t00:00:01.200

如果我把這些直接得到一個錯誤類型不匹配,有意義:

[DATATYPE_MISMATCH。BINARY_OP_DIFF_TYPES)不能解決”(時間戳+ offsetmillis)”數據類型不匹配:左右二元操作符的操作數有不兼容的類型(“時間戳”和“長整型數字”)

但是我不知道我怎樣才能最好的這個時間或時間間隔。

1接受解決方案

接受的解決方案

Lakshay
尊敬的貢獻者三世
尊敬的貢獻者三世

嗨@Ivo Merchiers,

這是我是如何做到的。正如你提到的,我正在考慮毫秒作為輸入的日期“t”專欄和偏移量添加“offSetMillis”專欄。首先,我把“t”專欄毫秒,然後添加“offSetMillis”這最後轉換新值回“new_ts”專欄的時間戳

截圖2023-02-06 6.50.51點

在原帖子查看解決方案

4回複4

Lakshay
尊敬的貢獻者三世
尊敬的貢獻者三世

嗨@Ivo Merchiers,如果你隻是想創建一個日期與毫秒,您可以創建直接通過提供價值datetime如下。

截圖2023-02-04 12.28.02點然而,如果你的usecase毫秒添加到日期值然後你必須將日期轉換為毫秒之前添加毫秒。

Merchiv
新的貢獻者三世

嗨@Lakshay戈埃爾,

我剛剛添加了火花。createDataFrame '命令在這裏作為一個例子,真實數據來自一些現有表,所以我不能用python初始化。

我想添加一些毫秒(整數/長/無論)格式一個時間戳(應該已經毫秒精度)Pyspark。

我怎麼做你提出的第二種方法呢?

Lakshay
尊敬的貢獻者三世
尊敬的貢獻者三世

嗨@Ivo Merchiers,

這是我是如何做到的。正如你提到的,我正在考慮毫秒作為輸入的日期“t”專欄和偏移量添加“offSetMillis”專欄。首先,我把“t”專欄毫秒,然後添加“offSetMillis”這最後轉換新值回“new_ts”專欄的時間戳

截圖2023-02-06 6.50.51點

Merchiv
新的貢獻者三世

盡管@Lakshay高爾的解決方案,我們一直使用另一種方法,我們發現一個可讀點:

從pyspark。sql進口列、函數f def make_dt_interval_sec (col:列):返回f.expr (f”make_dt_interval (0, 0, 0, {col._jc.toString ()})”) df。withColumn (start_col f.col(“時間戳”)——make_dt_interval_sec (f.col (“offsetmillis”) / 1000),)

我不確定有兩種方法之間的性能差異。

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map