在将我们的初始事实加载到多维数据集之后,我们然后加载第二个文件,该文件为现有事实添加度量(因此第二个文件不会创建新事实)。我们使用Handler来执行此操作。
当从文件系统中删除第二个文件时,我们希望从事实中删除相关的度量。
我们有没有办法插入目录/文件监视器机制来完成此任务?
答案 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" />