如何在雪花中应用ROW ID?Oracle代码转换为Snowflake



有没有办法转换最后一个a.ROWID>b.snowflake中的以下代码中的ROWID值?下面是oracle代码。需要将ROW ID带到雪花。但是snowflake不维护ROW ID。有什么方法可以实现以下内容并转换行ID问题吗?

DELETE FROM user_tag.user_dim_default a
WHERE EXISTS (SELECT 1
FROM rev_tag.emp_site_weekly b
WHERE a.number = b.ID 
AND a.accountno = b.account_no 
AND a.ROWID > b.ROWID)

所以这个Oracle代码看起来非常糟糕,因为ROWID是一个表特定的伪列,因此表之间的值比较似乎非常糟糕。除非有一些对齐的魔术发生,比如当user_tag.user_dim_default被插入到rev_tag.emp_site_weekly中时,也会被写入。但即便如此,我也可以想象数据流不会得到你想要的。

就像雪花的大多数东西一样;没有免费午餐";,因此需要实现依赖ROW_ID的数据生命周期。

这意味着,如果您想要使用两个序列,那么您应该在每个表上显式地使用。如果你想让它们相互关联,听起来应该使用多表插入或合并,这样你就可以访问第一个表SEQ并在第二个表中关联它。

ROWID是数据库用于特定数据库操作的内部隐藏列。根据供应商的不同,您可能有其他列,如事务ID或逻辑删除标志。要非常小心地理解这些列的行为以及它们是如何工作的。它们可能没有按顺序排列,也可能没有顺序排列,它们的值可能会随着代码运行时DB Maint作业的运行而变化,或者其他人对表进行更新。例如,这些内部列中的某些列可能对多行具有相同的值。

联接表时,一个表上的RowID与另一个表的RowID没有关系。在编写Dedup逻辑或插入前删除类型逻辑时,您应该使用主键,然后再使用一个包含插入日期或上次更新日期的审核列。检查数据模型或ERD图,了解表之间的PK/FK关系以及可用的审核列。

最新更新