ODI 12C - 业务密钥自动递增

ODI 12C - Business Key auto increment

使用 ODI 12C,我有一个包含 2 个主键组合的维度。我只想执行一个自增的业务密钥。

注意:- 我不需要 SCD 行为

我这样做了:

1 - 在数据库架构中创建序列(无缓存)

2 - 在需要的映射中调用它:

    <%=odiRef.getObjectName("L", "SEQ_NAME", "D")%>.nextval

3 - 将映射设置为:

仅对插入有效,取消选中 NOT NULL 条件,EXCUTE ON HINT :TARGET

4 - 将 CKM 放入:CKM SQL

5 - 运行

您可以在项目或全局对象中创建序列。它分为三种类型:

  • 标准序列,其中最后一个值将存储在存储库中,ODI 会在每次检索值时递增它。
  • 具体顺序,与上面相同,只是你选择 table 将值存储在哪个模式中
  • 本机序列,仅使用底层数据库序列。这是最受欢迎的选择,因为它的性能会好很多。

然后您可以使用 :<SEQUENCE_NAME>_NEXTVAL 调用它。对于本机序列,它将为每一行获取一个新值。对于标准或特定序列,它将为代理处理的每一行提供一个新值。所以如果你逐行操作,它会为每一行赋予一个新的值,但是如果你做批量操作,它会在所有地方使用相同的值。

您也可以使用 #<SEQUENCE_NAME>_NEXTVAL 调用它,但是在将 SQL 推送到数据库之前,这个只会被替换一次,因此所有行都将具有相同的值。

如果您在 Oracle 数据库上使用本机序列,则必须将 Execute On Hint 设置为 Target,以便序列call 在最外层 select.