1

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

当从文件系统中删除第二个文件时,我们希望仅从事实中删除相关措施。

有没有办法让我们插入目录/文件观察器机制来完成这个?

4

2 回答 2

1

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

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

首先,您可以解耦度量:您将拥有两个具有通用“值”字段和“度量类型”字段以区分两种度量类型的记录,而不是同时包含 A 和 B 字段的记录。这种设计很灵活,因为您可以稍后引入一个新的度量“C”,它本身是从另一个文件提供的。

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

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

于 2013-05-14T13:08:52.960 回答
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" />
于 2013-05-21T13:24:31.870 回答