我有一个 excel 工作簿,其中包含多个具有相同数据模式的工作表。我有工作实现从单张加载数据。
有没有办法使用 JoinOperation 或任何此类操作将相似的记录(模式)合并到一个集合(行)中?
我的理解是 JoinOperation 可用于左、右、外和内连接,但不能用于联合,因为 MergeRows 的返回类型是 Row。
提前致谢。
您可以实现AbstractOperation
组合多个输入操作,如下所示:
public class UnionAllOperation : AbstractOperation {
private readonly List<IOperation> _operations = new List<IOperation>();
public override IEnumerable<Row> Execute(IEnumerable<Row> rows)
{
foreach (var operation in _operations)
foreach (var row in operation.Execute(null))
yield return row;
}
public UnionAllOperation Add(IOperation operation) {
_operations.Add(operation);
return this;
}
}
更新:请参阅此处的并行版本。
在这样的过程中使用它:
public class Process : EtlProcess {
protected override void Initialize() {
Register(
new UnionAllOperation()
.Add(new ExtractFromExcel("WorkBook1.xls"))
.Add(new ExtractFromExcel("WorkBook2.xls"))
);
}
}
这将执行联合所有操作。如果您需要一个返回不同行的联合AbstractAggregationOperation
,请在所有列上实现一个和组。