如果行相同,OpenRefine 将覆盖数据库中的唯一 ID



我已经从我的postgresql db上传了一个openrefine的数据集。在我的表中,我有一个主键"id"。

然后,我开始在开放式细化中清理导入的桌子,执行以下两件事:

1)聚类并合并包含地址位的几列("address_line_1","address_line_2","address_country"等),以便我可以将"london" "lodon" "londres"等条目合并到london等...

2) 添加基于address_line_1的列address_full,并将其他列与以下 GREL 连接起来:

if(isBlank(cells["address_line_1_normalised"].value), " ", 
cells["address_line_1_normalised"].value)  
+ ' ' 
+ if(isBlank(cells["address_line_2_normalised"].value), " ", 
cells["address_line_2_normalised"].value)
+ ' '
+ if(isBlank(cells["address_town_normalised"].value), " ", 
cells["address_town_normalised"].value)
+ ' '
+ if(isBlank(cells["address_county_normalised"].value), " ", 
cells["address_county_normalised"].value)
+ ' '
+ if (isBlank(cells["address_postcode"].value), " ", 
cells["address_postcode"].value)
+ ' '
+ if(isBlank(cells["address_country_normalised"].value), " ", 
cells["address_country_normalised"].value)

3)聚类和合并full_address以标准化地址。

在这里,我会很高兴,并希望在postgres中再次上传,但是在提取的那一刻,我意识到某些ID号是相同的,这应该是不可能的,经过仔细询问,我认为有些行已被其他行压碎。

--详--

1)我确定我在pg表中有唯一的ID。 2)从PG获取数据到openrefine的查询是:select * from schema_name.table_name;3)我在开放细化中编辑后的csv输出将以这样的id系列开始。

1
2
3
...
-> from row 265 it would go like this 
265 (same record 265)
265 (same record 265)
266 (same record 266)
266 (same record 266)
266 (same record 266)
267 (same record 267)
267 (same record 267)
267 (same record 267)
...
-> up until row number 2456 (whose id is 1245) and from here starts again the unique increment of the id column:
1245
1246
....
-> up until 4000 something - where it has a jump of several thousands. 
6234 

我想 openrefine 只是覆盖了所有缺失的记录,并将重复行的所有 id 与列表的第一个 id 固定在一起。

有谁知道openrefine的工作原理知道如何反转这一点?

听起来很简单 - 错误在于将数据从postgresql导入OR。我使用 csv 重新导入数据,然后在 UID 列中为重复项设置了一个分面 - 发现当从 pg 创建项目时,一半的记录被其他记录覆盖,而使用 csv,没有记录被覆盖。

结论:使用与数据库的连接在OR中创建项目是有问题的,不要使用它。

最新更新