EXCELファイル内の大量データを使って処理する場合の処理時間削減

初めて投稿します。初心者です。

現在、EXCELファイルをデータテーブルに落とし込んで、編集したうえで出力する処理を検討しております。
対象のインプットデータ(Excelの行)が3万件、列として150個ほどあり、
(EXCELファイルの容量自体は50000KBほど)
データテーブルの繰り返し処理にて実行しているのですが、処理時間が数時間たっても終わらない状態となっております。
(ですので、いつも途中であきらめて終了させています)

不要列を削除(20個ほどに削減)したうえで処理するよう実装しているのですが、処理時間は削減できず、
何かいい方法とかご教示頂けないでしょうか?
データテーブルではなく配列型にすると、処理時間が早くなるという話も聞いたのですが、EXCELデータの全行を配列型に変換するロジックの作り方も分からない状態です。

処理の流れとしては、
①Excelデータの読み込み(ここが大量データです)
②不要列の削除(不要行は存在しません)
③各行の特定列内容確認(条件分岐)
④③の結果をもって、列追加と値挿入
⑤④の内容を別のExcelファイルへ出力
のような感じです。

お手数ですが、何かいい方法をご教示頂けますでしょうか?

(初心者ですので、処理の考え方自体が誤っているかもしれませんが、その点はご容赦ください)

こんにちは、私も数千行のデータテーブルを使用しました。 私の提案は、最初にプロセスがスタックしている場所をデバッグすることです。 優れているのは書き込みですか? それとも他のシーケンスやアクティビティにありますか?

Kon’nichiwa, watashi mo sū sen-gyō no dētatēburu o shiyō shimashita. Watashi no teian wa, saisho ni purosesu ga sutakku shite iru basho o debaggu suru kotodesu. Sugurete iru no wa kakikomidesu ka? Soretomo hoka no shīkensu ya akutibiti ni arimasu ka?

[image]

こんにちは

まずはファイルIO等遅い処理を頻繁に実施していないかになりますが
2-4がDataTable上のみの処理であればこれは対象外ですね。
あとはUiPath固有の問題になりますが、アクティビティ間のオーバーヘッドがそれなりに
大きいのでForEachRow等で相当数の行を回すと、それなりに遅くなります。
解決方法は、アルゴリズム自体の見直し、それが難しければLINQやInvokeCodeを使う
という方向になると思います。
いずれにしましても、もう少し具体的なデータ(ダミーでも可)や処理内容を提示いただいた方が
良いかと思います。

高速で処理が目的なら、VBA使った方が圧倒的にいいですよ。
UiPathで処理するメリットがないです。

返信ありがとうございます。
データですが、各行にそれぞれ上下関係があります。

例えば、4行あって一つの列にそれぞれ
・A
・B
・C
・D
とあるのですが、この内容には上下関係があり
Bの上位はA、CDの上位はBという関係性があるため
アウトプットとして、
・A
・AB
・ABC
・ABD
という形でそれぞれの行に付加情報をつける流れを作りたいと考えておりました。
(既存の列はそのまま出力する形で上記の内容を追加列で出力するイメージです)

ありがとうございます。
アクティビティはあくまでもデータテーブル繰り返しでして。

いろいろデバッグ試してみます。

ありがとうございます。

そうだったんですね。
すいません、VBAが完全に疎い状態で、Uipathはまだロジック構築がしやすいと思っていたので、いろいろ考えてしまいました。

参考にさせていただきます。

こんにちは

これはどのように定義づけられていて、どのように実装しているのでしょうか?
例えば多重ループになっているようでしたら、実装自体の見直しの余地はあると思います。

すいません、返信遅れました。

いろいろ考えた結果、すべてをUipathで実装せずにする方法で対応しました。

お手数をおかけしました。

1 Like

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.