文件删除处理程序

时间:2013-05-06 07:32:24

标签: activepivot

在将我们的初始事实加载到多维数据集之后,我们然后加载第二个文件,该文件为现有事实添加度量(因此第二个文件不会创建新事实)。我们使用Handler来执行此操作。

当从文件系统中删除第二个文件时,我们希望从事实中删除相关的度量。

我们有没有办法插入目录/文件监视器机制来完成此任务?

2 个答案:

答案 0 :(得分:1)

如果我们理解正确,并且为了简化用例,您的数据集有两个度量A和B.对于相同的记录,一个文件带有度量'A'而另一个文件带有度量'B'。并且您希望独立地自由更新或删除度量A或B的数据。

有几种方法可以实现这一目标。

首先,您可以解除度量:除了包含A和B字段的记录外,您将拥有两个带有通用“值”字段的记录,以及一个“mesure type”字段来区分两种度量类型。这种设计非常灵活,因为您可以稍后引入一个新的度量“C”,它本身来自另一个文件。

最优雅的选择可能是使用具有多态分布的ActivePivot分布式架构。您将设置两个独立的多维数据集,一个仅包含“A”度量,另一个多维数据集包含“B”度量。然后使用多态分布将多维数据集连接在一起,ActivePivot会将它们动态合并在一起并呈现两个度量,就好像它们属于同一个(虚拟)多维数据集一样。

最后快速而肮脏的解决方案:将您的度量配置为ActivePivot中的“​​可空”字段。这样,当您想要删除度量'A'时,实际上会将'null'写入记录的'A'字段。

答案 1 :(得分:1)

你可以扩展

.CSVSource.onFileAction(IFileWatcher watcher, Collection<String> added, Collection<String> modified, Collection<String> deleted)

通过调用super.onFileAction(...)来处理添加和修改的文件,并添加更多逻辑来处理已删除的文件。

这可以通过更新在deletedFile字段中提供已删除文件的事实来完成。可以通过在LoadInstructions.csv文件中添加FILEPATH元数据来自动填充此字段:

Format,FilePattern,FilePath,MetaData
FormatName,formatRegex.csv,someFolder,FILEPATH=N/A

并且有一个字段:

<field name="FILEPATH" type="string" indexation="dictionary" nullable="true" defaultValue="N/A" />