簡體   English   中英

在雪花中使用 SQL 我想獲取一個表的列並將其添加到基於共享連接鍵的另一個雪花表,但不起作用?

[英]Using SQL in snowflake I want to take one table's column and add that to another snowflake table based on shared join keys, but not working?

我有兩個表,一個名為: stg_tbl的階段表和一個名為: target_tbl的目標表。 stg_tbl中有一個名為finance_data的列,我想將其添加到target_tbl中。 target_tblstg_tbl共享兩列: person_id, start_dt 我想根據連接鍵將 stg_tbl 的stg_tbl列連接到target_tblperson_id, start_dt

到目前為止我已經嘗試過:

SELECT a.*, b.finance_data
FROM target_tbl AS a
LEFT JOIN stg_tbl AS b
ON a.person_id=b.person_id
AND a.start_dt=b.start_dt

不確定我在這里做錯了什么。 但是在我執行此操作並檢查不是 null 行之后,如下所示:

SELECT * FROM target_tbl WHERE finance_data IS NOT NULL;

我得到零結果。 所以在某個地方這個數據沒有被匹配/注冊。

我正在通過數據塊筆記本執行此 SQL 並且已經成功連接到雪花。

我正在通過 cursor 執行代碼,如下所示:

cursor.execute("ALTER TABLE TARGET_TBL ADD COLUMN FINANCE_DATA FLOAT")
cursor.execute("""
SELECT a.*, b.finance_data
FROM target_tbl AS a
LEFT JOIN stg_tbl AS b
ON a.person_id=b.person_id
AND a.start_dt=b.start_dt
""")

如果您要填充 target_tbl 中新添加的 finance_data 列,您需要執行 UPDATE 語句。 是這樣的:

UPDATE target_tbl SET finance_data=stg_tbl.finance_data
FROM stg_tbl
WHERE target_tbl.person_id=stg_tbl.person_id
AND target_tbl.start_dt=stg_tbl.start_dt

更新聲明

update target_tbl set finance_data=s.finance_data
from target_tbl t 
inner join stg_tbl s on s.person_id=t.person_id and s.start_dt=t.start_dt;

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM