我看过其他问题,但似乎雪花不支持sql中的if/else,至少不支持其他sql服务器支持它的方式。
有些人建议使用javascript,但如果可以的话,我想避免使用。
我试图使用雪花python库将一些数据插入到表中,如果它已经存在,那么我想更新数据,我已经查看了合并,但它似乎不适合我,因为我的数据不是表
这就是我到目前为止没有用的
f"""BEGIN
IF (EXISTS (SELECT * FROM {self.okr_table} WHERE kpi=TRUE AND Month(month)=MONTH(current_date()) AND year(month)=YEAR(current_date())))
THEN
UPDATE {self.okr_table} SET [DATA] = {json.dumps(self.data)} WHERE kpi=TRUE AND Month(month)=MONTH(current_date()) AND year(month)=YEAR(current_date()))
ELSE
INSERT INTO {self.okr_table} (month, data, kpi) SELECT current_date(),parse_json('{json.dumps(self.data)}'), true;
END"""发布于 2022-07-06 15:21:28
若要从插入/更新中筛选,最好使用单个合并语句
我看过合并,但它似乎不适合我,因为我的数据不是表
这不是一个问题,因为源可以是表或子查询:
MERGE INTO {self.okr_table}
USING (SELECT PARSE_JSON({json.dumps(self.data)} AS data
, MONTH(current_date()) AS month
, YEAR(current_date()) AS year
) s
ON {self.okr_table}.KPI
AND MONTH({self.okr_table}.month) = s.month
AND YEAR({self.okr_table}.month) = s.year
WHEN MATCHED THEN UPDATE
WHEN NOT MATCHED THEN INSER ...;如果/否则分支工作在雪花:
BEGIN
IF (EXISTS (...)) THEN
UPDATE ... ;
ELSE
INSERT ... ;
END IF;
END;请注意每句话后的;,END IF和条件括号。
https://stackoverflow.com/questions/72885625
复制相似问题