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

時間戳列設置為空白當δ表中插入一個記錄

naga_databricks
新的貢獻者三世

我試圖插入一個記錄到三角洲表使用筆記本用python編寫的。這個記錄應該有一個時間戳列,空白的最初,後來我有一個計劃來更新時間戳值。

我該如何插入記錄:

stmt_insert_audit_record = '插入默認值。batch_run (task_name,開始、結束、狀態)值(\”+ param_task_name +“\”, \“+ param_start +“\”, \“+ param_end +“\”, \“+ param_status + ' \ ') ' spark.sql (stmt_insert_audit_record)

這些列,當我設置param_end如下,insert語句效果很好。

param_end = datetime.utcnow () .strftime (“% Y - % m - H % dT %: % m: % S”)

但是我不想設置一個結束日期。從insert語句刪除列名稱會給我一個錯誤,因為火花將希望提到的所有列。我將得到一個異常的列沒有指定插入的結束。

我怎麼設置param_end值,以便Insert語句可以考慮一個空白的價值?

8回答說8

很高興你搞懂了,知道好

Sandeep
貢獻者三世

附上雙引號中的SQL字符串,指定一個空字符串param_end, SQL字符串,將param_end在單引號,

例如:

param_end = " "
stmt_insert_audit_record = "插入默認值。batch_run (task_name,開始、結束、狀態)值(“+ param_task_name +”、“+ param_start +”、“+ param_end +”,“+ param_status +”)“spark.sql (stmt_insert_audit_record)

這將有助於我相信。

naga_databricks
新的貢獻者三世

當我試著封閉的param_end雙引號時,我得到以下錯誤:

“‘org.apache.spark。SparkDateTimeException: [CAST_INVALID_INPUT]價值”類型的“字符串”不能把“時間戳”,因為它是畸形的。正確的值根據語法,或改變其目標類型。使用“try_cast”容忍畸形的輸入,返回NULL。如果有必要設置“spark.sql.ansi。啟用”到“false”繞過這個錯誤。

然後我試著在param_end類型轉換函數將其轉化為時間戳。現在這個工作。

另外,我已經設法創建一個dataframe並將它附加到三角洲表,而不是使用spark.sql ()。這是簡單得多。

Vidula_Khanna
主持人
主持人

嗨@Naga Vaibhav Elluru

提升我們的社區通過承認特殊貢獻。你參與這是最好的答案是我們共同的追求知識的證明

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

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

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

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

Baidu
map