Featuretools实体集添加关系报错:order_id为索引时如何指定一对一关系
Featuretools 一对一关系创建报错解决方案
你遇到的报错Unable to add relationship because child column 'order_id' in 'orders' is also its index触发原因是Featuretools默认要求关系为一对多模式:父表的关联字段必须是父表的索引(唯一值),子表的关联字段必须是子表的非索引外键(允许重复值)。你当前把orders设为子表,而子表的关联列order_id又是它自身的索引(值唯一),不符合默认规则才会抛出错误。
Featuretools没有单独的「一对一关系」参数配置,但可以通过两种兼容方案实现相同效果:
- 方案1:调换父子表身份
一对一属于特殊的一对多关系,仅多端最多有1条匹配记录。你直接把原本的子表orders调整为父表,将另一张关联表设为子表,用另一张表的关联字段作为外键指向orders的order_id索引即可,后续特征生成的结果和预期的一对一逻辑完全一致,是成本最低的方案。 - 方案2:新增非索引外键列
如果你必须保留原有父子表的层级结构,就在orders表中新增一列和order_id值完全相同的普通列(可命名为order_id_fk),不要将该列设为orders的索引,创建关系时用这个新列作为子表的关联字段即可。
内容的提问来源于stack exchange,提问作者Mohit Jain
相关产品推荐
相关产品推荐

