0

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

然后,我在打开的精炼中清理我的导入表,执行以下两件事:

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

2)添加一个address_full基于address_line_1以下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)我在 openfine 中编辑后的 ​​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 的工作原理知道如何反转这个?

4

1 回答 1

1

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

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

于 2019-06-10T10:46:55.903 回答