同じデータ スキーマを持つ複数のシートを含む Excel ブックがあります。単一のシートからデータをロードするための作業実装があります。
JoinOperation またはそのような操作を使用して、同様のレコード (スキーマ) を単一のセット (行) にマージする方法はありますか?
私の理解では、MergeRows の戻り値の型が Row であるため、JoinOperation は左結合、右結合、外部結合、および内部結合に使用できますが、ユニオンには使用できません。
前もって感謝します。
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"))
);
}
}
これにより、unionall操作が実行されます。個別の行を返すユニオンが必要な場合はAbstractAggregationOperation
、すべての列に、およびグループを実装します。