初めまして。データテーブルの集計について、質問です。
どうしたらいいか全くわからないので、投稿させて頂きます。
Datatable内の複数のKEYを基に数値を集計する方法はわかっているのですが、
文字列の集計(という表現が正しいかはわかりません)は実現可能なのかをご教示頂きたく…。
(例)
▼Datatable1
エリア|大カテゴリ|中カテゴリ|小カテゴリ
東京|生活|消耗品|石鹸
東京|生活|消耗品|洗剤
神奈川|生活|消耗品|洗剤
東京|趣味|PC関連|パソコン
東京|趣味|PC関連|マウス
東京|趣味|雑誌|その他
東京|趣味|裁縫|縫い針
↑このようなデータテーブルがあったとして、
「エリア+大カテゴリ+中カテゴリ」をKEYとし、
「小カテゴリ」の文字列を、以下のような形に集約したいのです。
=KEY単位で、小カテゴリの文字列を「,」区切りで集約したい(カンマでなく、スペースでも記号でも何でもいいです)
▼Datatable2
エリア|大カテゴリ|中カテゴリ|小カテゴリ
東京|生活|消耗品|石鹸,洗剤
神奈川|生活|消耗品|洗剤
東京|趣味|PC関連|パソコン,マウス
東京|趣味|雑誌|その他
神奈川|趣味|裁縫|縫い針
過去トピックも見ましたし、ネットでも散々調べたのですが、全くやり方が見えず。
UiPathの機能をもって、これが実現可能なのかどうか、皆様のお知恵を拝借できたら、と思います。
何卒よろしくお願いします。
cheez_RPA
(いわさき りょうすけ (UiPath Japan MVP 2019 - 2021))
3
Tupleを使用して、エリア・大カテゴリ・中カテゴリをキー、小カテゴリを値とする形のデータ型を作ってあげればよいかと思います。
とここまで書いて思ったんですが、データテーブルで実装できそうでした。
以下、頭の中で思いついた実装イメージです。
- 元のデータテーブルを
dt
とする
- キー部分についてユニークなデータを洗い出す
- データテーブルから小カテゴリの列を削除する(これを
dt2
とする)
-
dt2
に、重複排除するアクティビティを適用してユニークにする
-
dt2
に、「小カテゴリ」を保存する列を追加する
-
dt2
を各行ループして下記処理を行う
-
dt
に対してフィルターする(これをdtFiltered
とする)
- フィルター条件は、
”エリア”
= row("エリア").toString
のようにして、すべてのキー部分の列をAndで追加
- 今回の場合は「エリア」「大カテゴリ」「中カテゴリ」の3つ分の条件がAndでつながる
- これで、
dtFiltered
は、エリア・大カテゴリ・中カテゴリが一致するデータ(1つ以上)だけになった
-
dtFiltered
を各行ループする
- 各行の「小カテゴリ」のデータを、何かしらの方法で保存しておく
- 保存しておいた「小カテゴリ」のデータを、
dt2
の小カテゴリを示す位置に追記する
- For each
row
としているなら、row("小カテゴリ")
= ~~~
とする
2 Likes
Dictionary、一度頭をよぎりました。
ただ、2度ほどしか使ったことがなく、イチから使い方を学ぶ必要がありそうです。
ありがとうございます!
具体的な対処法、ありがとうございます。
明日、会社で実装できるか試してみます!
1 Like
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
6
私はuipathを使い始めて初めてdictionary型の存在を知りました…
何事も経験ですね…頑張りましょう!私は今、StudioXを頑張っていますよ^_^
1 Like
Yoichi
(Yoichi)
7
こんにちは
やり方はいろいろありますが、
この要件ならDictionary使って文字列操作で片づけるかなー
以下一例です。
Sample20200622-1.zip (17.2 KB)
#数が多いとStringBuilder使う方が良いかも。
3 Likes
はじめまして!
サンプルまで、ありがとうございます。
え、凄くないですか!?
完璧です!;;
横展開させていただきます!ありがとうございました!
2 Likes
HANACCHI
(はなっち!UiPath Japan MVP 2019-2022)
9
おぉ!よかったですね!横展開もさることながら、内容をしっかりマスタしてまいりましょう!
よろしければ、@yoichiさんの書き込みの解決策にチェックをお願いします。
1 Like