2017-03-07 95 views
0

我有一个Pentaho作业,在其中一个转换中,我想获取文件夹中文件的数量。我尝试了两种不同的方法,但都花了2分钟才能执行。我想知道是否有一个步骤可以用来以更高效的方式来做到这一点。快速获取文件夹的文件数

方法1 - 获取文件的行数 - >设置变量

在我获取文件的行数步我的目录和通配符来获取XML文件的COUNT(* XML。)在一个文件夹中。在内容选项卡中,我将文件数保存到一个字段(fileCount)中,然后保存到一个变量中。对于包含3,722个xml文件的文件夹,它需要2:15才能运行。

Get File rows count - File

Get File rows count - Content

方法2 - 获取文件名 - >组按 - >设置变量

用这种方法我有一个类似的设置作为步骤“获取文件行数',但后来我做了一个类型为“行数(不带字段参数)”的行为组。该方法在2:30运行相同的3,722个文件。

我认为这些都花了很长时间,因为它试图获取内存中的文件,但我只关心计数。希望看到一种方法来获得点数。

回答

1

The 获取文件行数步骤将计算每个文件中的每一行,所以难怪它很慢。

使用获取文件名一步,它应该是非常快,无论文件大小。幸运的是,我有一个完整的XML文件的文件夹准备好了,所以这里是什么样的期待截图(在Linux VM上我的笔记本电脑)

enter image description here

如果您正在使用此步骤,但问题仍然存在,第一确保你已经从转换中删除了其他输入步骤,因为它们仍然在运行并可能会产生干扰。其次,检查当Spoon访问元数据时,防病毒软件是否试图扫描每个文件。

+0

感谢您的意见,使用第二种方法更有意义,特别是在您不关心行数时。我做了另一个测试,发现是什么导致了缓慢。当我在查看本地文件夹时,它运行得非常快,速度与您附加的截图类似。当我运行一个网络文件夹时,它花费了两分多钟的时间。这使我相信问题是与共享位置沟通而不是步骤本身。 –