使用 ODI 12C,我有一个包含 2 个主键组合的维度。我只想使用 auto-increment 执行业务密钥。
注意:-我不需要 SCD 行为
使用 ODI 12C,我有一个包含 2 个主键组合的维度。我只想使用 auto-increment 执行业务密钥。
注意:-我不需要 SCD 行为
我这样做了:
1 - 在数据库模式中创建序列(没有缓存)
2 - 在所需的映射中调用它:
<%=odiRef.getObjectName("L", "SEQ_NAME", "D")%>.nextval
3 - 将映射设置为:
仅对插入有效,取消选中 NOT NULL 条件,EXCUTE ON HINT :TARGET
4 - 将 CKM 放到:CKM SQL
5 - 运行
您可以在项目或全局对象中创建序列。它有三种类型:
然后,您可以使用:<SEQUENCE_NAME>_NEXTVAL
. 对于本机序列,它将为每一行获得一个新值。对于标准或特定序列,它将为代理处理的每一行提供一个新值。因此,如果您进行逐行操作,它将为每一行赋予一个新值,但如果您进行批量操作,它将在任何地方使用相同的值。
您也可以使用它来调用它,#<SEQUENCE_NAME>_NEXTVAL
但是在将 SQL 推送到数据库之前,这个只会被替换一次,因此所有行都将具有相同的值。
如果您在 Oracle 数据库上使用本机序列,则必须将Execute On Hint设置为Target,以便序列调用位于最外层选择中。