我似乎在Open Refine(Google Refine 2.5 [r2407])中遇到了工作流问题,无法进行复杂的行清理。到目前为止,我发现的是如何根据单个列删除重复的行。
我的目标是删除基于多列的重复行,最好是在特定的层次结构中。
在Refine中给出以下虚拟数据
+----+---------+---------+--------+------------+------+-----------------------------------+
| id | timeAgo | title | author | date | val1 | [After Refine, keep Record] |
+----+---------+---------+--------+------------+------+-----------------------------------+
| 1 | 10 | Faust | Mr. A | 2014-01-15 | 10 | ->B, older entry |
| 2 | 11 | Faust | Mr. A | 2014-01-21 | 10 | A (because of Date) |
| 3 | 8 | Faust | Mr. A | 2014-01-15 | 10 | B |
| 4 | 8 | RedHead | Mr. B | 2014-01-21 | 34 | ->D, older entry |
| 5 | 7 | RedHead | Mr. B | 2014-01-21 | 34 | ->D, same time Ago, but lower ID |
| 6 | 7 | RedHead | Mr. A | 2014-01-01 | 13 | C (because of author, date, val1) |
| 7 | 7 | RedHead | Mr. B | 2014-01-21 | 34 | D |
+----+---------+---------+--------+------------+------+-----------------------------------+
我想基于以下逻辑来删除重复的行。如果
结果将是:
+---------+----+---------+---------+--------+------------+------+
| Refined | id | timeAgo | title | author | date | val1 |
+---------+----+---------+---------+--------+------------+------+
| A | 2 | 10 | Faust | Mr. A | 2014-01-21 | 10 |
| B | 3 | 8 | Faust | Mr. A | 2014-01-15 | 10 |
| C | 6 | 7 | RedHead | Mr. A | 2014-01-01 | 13 |
| D | 7 | 7 | RedHead | Mr. B | 2014-01-21 | 34 |
+---------+----+---------+---------+--------+------------+------+
如果没有其他解决方案,我还是谢谢你选择一个脚本/ GREL。
但是可以通过Refines着名的工作流程“录制”来实现上述逻辑,那么它可以被提取并应用于其他相同格式的数据集吗?
我背后的动机是让员工更加周到地使用数据(超越excel),但不要使用完整的脚本语言立即与他们对抗。
答案 0 :(得分:0)
这听起来像是一个简单的排序问题。
value.split(',')[0]
转换步骤5中的所有列,以提取第一个值(如果按正确的顺序对其进行排序,则应该是所需记录的值