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

如何從十進製轉換列類型在sparksql日期

pepevo”id=
新的貢獻者三世

我需要列類型從十進製轉換為日期在sparksql格式不是yyyy-mm-dd ?

一個表包含列數據聲明為十進製(38歲,0)和數據名稱格式,我無法在databrick筆記本上運行sql查詢。

我曾經嚐試過to_date (column_name) = date_sub(當前日期(),1),它不工作。我試過了,”from_unixtime (cast (column_name字符串),“yyyy-MM-dd”)或to_date (cast (unix_timestamp (column_name, yyyy-MM-dd”),他們都沒有工作。From_unixtime (cast (column_name字符串),“yyyy-mm-dd”,它給我正確的格式但這些數據表中不存在。

我怎麼能把這列類型日期在sql ?

10個回答10

User16857282152”id=
貢獻者

我將開始調試的記錄,

第一計數null,也許你的進口沒有讀到列一些格式的原因。

Select count(*)從表target_column不是零;

Select count(*)從表target_column是零;

如果表是巨大的和成本意義重大,結合上述成一個單一的查詢。

然後抓住幾行

創建testTable select * from sourceTable target_column不是零限製10;

注意限製條款,隻抓幾行。

應該給你什麼是錯誤的,如果有任何與實際的數據導入和你所期望的數據。

pepevo”id=
新的貢獻者三世

select count(*)從prty_cdim load_dt_id不是零;

有732734948的記錄

select count(*)從prty_cdim load_dt_id是零;

0的記錄

創建表testtable select * from prty_cdim load_dt_is不是零限製10;從testtable select count (*);

表testtable成功創建和10行。

選擇從testtable load_dt_id;

load_dt_id

20140419

20140419

. .

20140419

10行

select *從testtable to_date (cast (load_dt_id字符串),'名稱')= date_format (date_sub(當前日期(),1),'名稱');

好的批量玻璃1(不知道這是什麼意思?)。當我點擊批量圖像,這是——“與三角洲加速查詢:該查詢包含一個高度選擇性濾波器。為了提高查詢的性能,將表轉換為三角洲和運行Opmitize ZORDER通過命令在桌子上“違約”testtable”。

pepevo”id=
新的貢獻者三世

我已經嚐試了許多數據功能比較sysdate甚至沒有運氣和10個表中的記錄。有一種方式我可以比較sysdate小數嗎?

即使使用,unix_timestamp from_unixtime和沒有人工作。

為什麼scala sql是不友好的。where子句之後會是什麼樣子在磚:

to_date (trunc (load_dt_id), '名稱')= trunc (sysdate 1);

我試著“trunc (cast (load_dt_id字符串),'名稱')= date_format (date_sub (currentl_date(), 1), '名稱');”

或“

trunc (cast (load_dt_id字符串),'名稱')= trunc (date_sub (currentl_date(), 1), '名稱');

他們都沒有工作

User16857282152”id=
貢獻者

您可以運行

“描述表;”一列的數據類型。

我跑了幾個例子,發現下麵的工作,我認為你可能隻是一些格式問題。

探索其中的一些例子,看看你可以找到你的錯誤。

記得刪除你創建任何表如果你是在一個共享工作區。

創建一個表與小數名為id列。

創建表temp6(選擇20140419.00 id);

描述temp6;

——顯示它確實是一個小數

選擇,注意sql處理int浮動

%的sql select * from temp6 id = 20140419;

也為你投下字符串

%的sql select * from temp6 id =“20140419”;

相同的整數使用嗎

創建表temp7(選擇20140419 id);

這最後一個例子可能會讓你接近,

select *從temp6 id <替換(cast(當前日期()作為字符串),“-”);

分解,通過運行

選擇當前日期()

然後把字符串

選擇演員(當前日期()作為字符串);

然後把破折號

選擇替換((當前日期()作為字符串),“-”)

然後在where子句中使用的,但根據需要修改以適合您的邏輯。

注意我的工作當我整數或小數相比一個字符串,sparkSQL投。

pepevo”id=
新的貢獻者三世

謝謝你湯姆。我已經工作了。

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

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

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

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

Baidu
map