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

如何更新地圖數據類型的列的值δ表使用python字典和SQL update命令?

麥當娜
重視貢獻二世

我有一個δ表由:

如果不存在dev.bronze % sql創建表。test_map (INT id, table_updates MAP < STRING,時間戳>,約束test_map_pk主鍵(id))使用三角洲位置“abfss: / / bronze@Table路徑”

初始值:

插入dev.bronze。test_map值(空),(2,null),(零);

注意,在列“table_updates”沒有價值。

圖像

在我們的平台處理其他表後,我有表更新信息如下python字典像:Beplay体育安卓版本

table_updates_id1 = {id1_table_1: datetime。datetime(33 2023, 26日,4日,22日,323000年),“id1_table_2”: datetime。datetime(33 2023, 26日,4日,22日,323000)}

image.png

現在,我想更新的值列“table_update”,使用SQL update命令id = 1(注意,我想更新表不是dataframe)。

我嚐試了不同的方法但失敗了。

試驗1:

火花。sql (f”“dev.bronze更新。test_map設置table_updates =地圖({table_updates_id1}) id = 1”“”)

錯誤:

圖像

實驗2:

火花。sql (f”“dev.bronze更新。test_map設置table_updates =地圖(' {','。加入([f ' {k}, {v}’k、v在table_updates_id1.items ()))}”) id = 1”“”)

錯誤:

圖像

知道如何解決這個問題嗎?謝謝。

3回複3

匿名
不適用

@Mohammad劍:

你收到的錯誤消息表明,SQL UPDATE命令是期待一個map < string,時間戳>類型的列,而是接收一個字符串或一個不匹配的數據類型。為了解決這個問題,你可以將Python字典轉換為一個有效的SQL地圖格式使用map_from_entries函數火花SQL。

這裏有一個例子如何使用map_from_entries函數來更新table_updates列在你的三角洲表:

從pyspark.sql。功能導入map_from_entries #將Python字典的鍵值對列表table_updates_list =列表(table_updates_id1.items()) #鍵值對列表轉換為SQL地圖格式table_updates_map = map_from_entries (table_updates_list) #使用SQL UPDATE命令更新三角洲表火花。sql (f”“dev.bronze更新。test_map設置table_updates = {table_updates_map} id = 1”“”)

在這個例子中,map_from_entries table_updates_id1詞典轉換為一個鍵值對列表,然後傳遞到map_from_entries函數來創建一個SQL映射。然後生成的SQL映射中使用SQL UPDATE命令來更新table_updates列的行id = 1,

麥當娜
重視貢獻二世

謝謝你的幫助。

我得到以下錯誤在運行下麵的代碼:

table_updates_map = map_from_entries (table_updates_list)

圖像

Vidula_Khanna
主持人
主持人

嗨@Mohammad軍刀

謝謝你的問題!幫助你更好的,請花一些時間來檢查答案,讓我知道它是否最適合您的需要。

請幫助我們選擇最好的解決方案通過點擊“選擇最佳”如果它。

您的反饋將幫助我們確保我們提供最好的服務給你。謝謝你!

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

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

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

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

Baidu
map