数据识别、解析、过滤和转换 -- GUI?

5 投票
3 回答
3727 浏览
提问于 2025-04-16 07:57

我在找一个不依赖云的开源应用程序,用来进行数据转换。如果有一个特别好用的应用,我甚至愿意花最多1000美元。

我看过一些工具,比如PerlKapow KatalystPentaho Kettle等等。

Perl、Python、Ruby这些都是编程语言,但我找不到专门用来处理数据的框架或领域特定语言(DSL)。这意味着它们并不是很好的开发环境,因为没有图形界面(GUI)来构建正则表达式、输入输出(CSV、XML、JDBC、REST等),也没有调试工具来测试一行又一行的数据。它们也不是不好,只是我想要的是一个专门为复杂数据转换设计的图形界面;如果这个图形界面或应用文件是用脚本语言写的,而不是存储在一些人类无法阅读的XML或ASCII文件中,那就更好了。

Kapow Katalyst是用来通过HTTP访问数据的(比如HTML、CSS、RSS、JavaScript等),它有一个不错的图形界面来转换非结构化文本,但这并不是它的核心价值,而且价格实在太贵了。它在处理文档命名空间路径方面做得还可以;我猜它的后台可能就是用XPath,因为语法看起来是一样的。

Pentaho Kettle有一个很好的图形界面,可以处理大多数常见数据存储的输入输出,它对数据处理的处理方式也不错,学习曲线不算陡峭。Kettle的调试工具还可以,数据很容易查看,但错误和异常没有和输出关联在一起,实际上也没有办法真正调试问题;这意味着你不能重新加载输出/错误/异常,但可以查看系统反馈。总的来说,Kettle的数据转换让我觉得似乎遗漏了什么,因为我完全搞不懂“如果不可能,就用JavaScript写转换”是什么意思;嗯,这是什么情况?

所以,有什么建议吗?我知道我还没有详细说明任何转换,但如果你真的用过某个数据处理产品,我想了解一下;甚至Excel也可以。

总的来说,我现在在找一个能处理1000到10万行数据,且有10到100列的产品。如果它能对数据集进行分析,那就太好了,Kettle在这方面做得还不错,但不是特别好。我还希望有内置的单元测试,这样我就能建立控制数据集,并对控制集进行变更测试。然后我希望在构建转换时能够选择性地过滤掉行和列,而不改变构建;例如,我运行一个数据集进行转换,过滤结果,下一次运行时这些集合会在第一次“逻辑”出现时自动被阻止;这意味着需要“查看”的数据会更少,每次增强迭代的运行时间也会减少。如果在我过滤行/列时,应用程序能够跟踪这些(并且输出也被过滤掉),并且单元测试能够高亮显示任何变化,那就太好了。如果我做的更改会影响应用程序日志和它跟踪单元测试的能力,比如我“破坏了一个分支”,它会给我警告,让我清除存储的分支数据……或者跟踪主键在下一代输出中的差异,甚至尝试用模糊逻辑进行匹配。我知道这可能是个不切实际的想法,但我还是想问问,看看有没有我从未见过的东西。

欢迎评论,我很乐意回答任何问题或提供更多信息。

3 个回答

1

我不太确定你具体想处理什么样的数据或者进行什么样的转换,但如果你主要是想做一些数学上的转换,可以试试 FreeMatOctave 或者 SciLab。如果你想做的是更像数据仓库那样的数据处理,可以试试一些开源的ETL工具,比如 CloverTalendJasperETL 社区版,或者 Jitterbit

2

使用Talend需要花费你超过5分钟的时间,可能接近1小时,才能开始搭建基本的数据转换流程,并满足你对版本控制的需求。你提到的管道过程在Talend中其实很简单,只要你知道怎么做。在这个过程中,你会有多个输入和输出,原始数据会经过各种转换和筛选,直到最终输出符合你的要求。然后,你可以安排定时任务,让这个过程在类似的数据上重复进行。多花点时间熟悉Talend,我相信你会成功完成你的需求。

我也是Google Refine的开发者之一,同时在日常工作中也使用Talend。其实有时候我会先在Google Refine中设计Talend的转换流程。(有时候甚至用Refine来修复那些出错的ETL转换!哈哈)我可以告诉你,我在Talend的经验对Google Refine的一些功能有小小的影响。例如,Talend和Google Refine都有一个表达式编辑器,用于处理你的转换(如果需要,Talend甚至可以用Java语言来实现)。

不过,Google Refine永远不会成为一个ETL工具,因为我们并没有设计它来与ETL工具竞争,ETL通常用于大型数据仓库的后端处理和转换。然而,我们设计Google Refine是为了补充现有的ETL工具,比如Talend,让你可以轻松地进行实时预览,从而更好地做出关于转换和清理的决策。如果你的数据量不是特别大,你也可以选择在Refine中完成你需要的操作。

3

Google Refine 是什么?

撰写回答