DBT/ Oracle错误:ORA-30926:无法在源表中获取一组稳定的行

yvgpqqbh  于 2023-05-22  发布在  Oracle
关注(0)|答案(1)|浏览(459)

在Oracle中使用DBT(数据构建工具)时。我正在创建客户电话号码的快照表,我正在获取ORA-30926:无法在源表中获得一组稳定的行。
我已经检查了唯一密钥的唯一性,没有重复项
注意:快照正常运行了10天,今天失败

vybvopom

vybvopom1#

原因:
问题是因为dbt生成了两个不同的记录(两个不同的唯一键),它们具有要更新的相同的变化维度id(dbt_scd_id)。所以dbt尝试更新一个记录两次。
解决方案:
在target > run > snapshots >中,<snapshot_name>在using之后添加以下代码

select * from your_table 
where dbt_scd_id not in(
        select dbt_scd_id
        from your_table 
        group by dbt_scd_id
        having count(*) > 1)

这将只选择没有重复项的记录。
注意:your_table = dbt生成的表

相关问题