Web Analytics Made Easy - StatCounter

Economics Of TEC

RPA,経済学,IT技術などに関する情報を発信しています。

【UiPath】Computeを使用してデータテーブルの集約計算をする方法

f:id:WillSpecter:20200802183750p:plain

 やりたいこと

Computeを使用して集約計算を行う 

 以下にDataTable型の変数dt従業員があるとします。

f:id:WillSpecter:20200705155401p:plain
 年齢の合計値を求めるためにはComputeを使用します。

 

dt従業員.Compute("sum(年齢)", String.Empty).ToString

String.Emptyの部分には条件を設定することができます。

 

例えば、

dt従業員.Compute("sum(年齢)", "[性別] = '男'").ToString

 

とすることで、データ内の男性の年齢の合計を求めることができます。

特に条件を設定しない場合は、String.Emptyとしておきます。

 

それでは メッセージボックスに表示させてみましょう。

f:id:WillSpecter:20200802184057p:plain 

結果↓

f:id:WillSpecter:20200802184119p:plain

エラーメッセージで「Objectの使用が無効です。」が表示されてしまします。
 

原因を調べたところデータテーブルの読み込み方法に問題があったようです。

 

dt従業員はExcelApplicationScopeアクティビティを使って読み込みを行っていたのですが、その場合データテーブルの中の値は強制的にobject型になってしまうようです。

 

Computeを使用する場合は、数値型である必要があるためエラーとなってしまうことがわかりました。

 

値の型を変更するために、BuildDataTableアクティビティを使用します。

日本語表記だとデータテーブルを構築です。

f:id:WillSpecter:20200802184209p:plain

こちらのアクティビティで先ほどと同じデータを作成します。

f:id:WillSpecter:20200802184221p:plain

年齢の型をInt32に変更してプロパティでデータテーブル型の変数dt従業員を設定します。

 

再度メッセージボックスで表示すると、、

f:id:WillSpecter:20200802184057p:plain

結果↓

f:id:WillSpecter:20200802193431p:plain

無事に年齢の合計値を表示することができました!

やはり、年齢の型を変更することで正常にComputeが動作することがわかりました。

 

sumの部分を

Avgにすると平均値を算出することができ、

Max,Minにすることで最大値最小値を算出することもできます。

ひとこと

ExcelAplicationScopeで読み込んだテーブルをComputeしたいケースは時々あるのですが、どうやら難しいみたいです。

データ量が多いとBuildDataTableで作成することが難しいので、悩みどころです。

 

他に便利な方法があれば教えていただけると幸いです。

 

LINQを使えばうまくできるみたいなので、今度挑戦してみたいと思います。

( ..)φメモメモ

 

他にもデータテーブルの操作について紹介しているので、ぜひ参考にしてみてください(^^)it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com

it-rpa.hatenablog.com