在Oracle中使用DBT(数据构建工具)时。我正在创建客户电话号码的快照表,我正在获取ORA-30926:无法在源表中获得一组稳定的行。我已经检查了唯一密钥的唯一性,没有重复项注意:快照正常运行了10天,今天失败
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生成的表
1条答案
按热度按时间vybvopom1#
原因:
问题是因为dbt生成了两个不同的记录(两个不同的唯一键),它们具有要更新的相同的变化维度id(dbt_scd_id)。所以dbt尝试更新一个记录两次。
解决方案:
在target > run > snapshots >中,<snapshot_name>在using之后添加以下代码
这将只选择没有重复项的记录。
注意:your_table = dbt生成的表