Slide 1

Slide 1 text

DataTableってなんだ? プログラミング未経験者に DataTable型を教える

Slide 2

Slide 2 text

自己紹介 • 小﨑 肇(こざき はじめ⇒[ハナ]肇⇒はなっち!) • 59歳 もうすぐ… • 東京都豊島区⇒神奈川県川崎市中原区 • 趣味 自転車だったけど、最近はINGRESS • 職歴  かなり前に今の会社に入社。 COBOL⇒JAVA⇒EXCEL-VBA  EXCEL-VBAでは、JP1-REPORTERとか、 SAGENT-REPORTERとか…  UiPath歴は、21ヶ月… Presented By [email protected]

Slide 3

Slide 3 text

• 内製化を進めるお客様先でロボット開発サポート中 • その中で、EXCEL上のセルをコピーして、 Webにペーストして...ってとこまで作成して、 そこから先どうしたら?と言う相談を受ける。 ⇒そこはDataTableだろうと思ってサポートする • 初心者向け社内教育は受講している。 ⇒変数とか、エレメントの概念は多少分かっている • 社内教育では、DataTableに関しては単語だけ登場 • ITリテラシの高い方は、何とか独学している模様 プログラミング未経験者に DataTable型を教える

Slide 4

Slide 4 text

いきなりDataTable型を教える前に 変数ってなんだ? プログラミング未経験者に 変数を教える Presented By [email protected]

Slide 5

Slide 5 text

自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所はカラッポ

Slide 6

Slide 6 text

自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に100円 100円をいれてみる ⇒ 足りないので商品が出てこない

Slide 7

Slide 7 text

自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる ⇒ 足りたので商品が出てくる! お金を溜める所に200円

Slide 8

Slide 8 text

自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる ⇒ 足りたので商品が出てくる! • 100円+100円=200円と言う事が、自 動販売機には分かる! • 200円から150円の商品を買って、 お釣りが50円と言うのも分かる!

Slide 9

Slide 9 text

自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる ⇒ 足りたので商品が出てくる! • 100円+100円=200円と言う事が、自 動販売機には分かる! • 200円から150円の商品を買って、 お釣りが50円と言うのも分かる! 情報をためておく場所、名前を変数

Slide 10

Slide 10 text

では本題 プログラミング未経験者に DataTableを教える いきなりDataTable型を教える前に Presented By [email protected]

Slide 11

Slide 11 text

DataTableって 引用元:https://qiita.com/tizonaColada_99/items/9212d35722af3bd5bc9f DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。

Slide 12

Slide 12 text

DataTableって DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。 引用元:私が考えた(^^♪ DataTableとは、EXCELのシートのようにセルの縦横集合体として格納されているデータの事です。 行毎に、列位置を指定する事で、セルを指定し、EXCELシートのようにデータを格納しています。

Slide 13

Slide 13 text

DataTableって DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。 引用元:私が考えた(^^♪ DataTableとは、EXCELのシートのようにセルの横集合体として格納されているデータの事です。 行毎に、列位置を指定する事で、セルを指定し、EXCELシートのようにデータを格納しています。 データを格納 容れ物の型を「DataTable型」、 容れ物の名前を「変数」と言う。 DataTable型 「変数」 Int32型 「変数」 Int64型 「変数」 String型 「変数」 〔参考〕

Slide 14

Slide 14 text

DataTable型って DataTable型には、列情報(ヘッダー情報)として、DataColumn型が一つ存在する 列情報には、列定義が1以上存在する 列情報には、ほかに重複しない列名が必要である 列情報には、どんなデータを格納するかの列形式が存在する

Slide 15

Slide 15 text

DataTable型って DataTable型には、行情報(データ情報)として、DataRow型が0以上存在する 行情報には、列毎の列形式に沿ったデータが格納される

Slide 16

Slide 16 text

DataTable型って DataTable型のデータを参照/設定は、 ① データテーブルの ② (ある)行の ③ (ある)列 の順である。 ② ③ 例:B4セル相当位置 DataTable.Rows(3).Item(1) ←※2 ↑※1 Or ↓※1 DataTable.Rows(3).Item("Column1") ※1 行の先頭は0から始まる ※2 最左端列は0から始まる

Slide 17

Slide 17 text

DataTable型…EXCEL編 EXCELシート上のデータを扱うには、DataTable型で処理した方が便利な時がある • 格納されているデータのすべてを処理したい • 格納されているデータの一部分を特定し、そのデータを処理したい のように、対象とするデータがたくさんある場合である 例:B4セルが空白かどうか知りたい 例:B列に空白があるかどうか知りたい

Slide 18

Slide 18 text

アクティビティ編 プログラミング未経験者に DataTableを教える 基本的なDataTable型が分かったら Presented By [email protected]

Slide 19

Slide 19 text

DataTable型…EXCEL編…どのように使う EXCELアプリケーションスコープの中に、「範囲を読み込み」アクティビティを配する フィルタの使用 ■オートフィルタ掛かっているデータだけ □オートフィルタ掛かっていても、全データ ヘッダーの追加 ■一行目をヘッダー情報とする □一行目をヘッダー情報とせず、 UiPathに任せる 表示形式を維持(値が1,234だったら) ■1,234として格納 □1234として格納 対象とするシート名 対象とする範囲指定 “” :UiPath自動判断 “A1” :A1セルを基準に獲得 その他 :指定セルを基準に獲得 格納されるDataTable型の変数(DT) 他のアクティビティの入力へ

Slide 20

Slide 20 text

DataTable型…EXCEL編…どのように使う 「繰り返し (各行)」アクティビティで、全行を対象にする 繰り返し(各行) データテーブル:DT 現在のインデックス:ix(int32) ix.ToString & "," & row.Item(1).ToString & "," & row.Item("Column1").ToString 例:B列が空白かどうか知りたい

Slide 21

Slide 21 text

DataTable型…EXCEL編…どのように使う DataTable型って、どんなデータになっている? 行情報があるか? DT.Rows.Count.Equals(0) 繰り返し(コレクションの各要素) コレクション値:DT.Columns 現在のインデックス:ix(int32) 行が0件である ix.ToString & "," & item.ToString 行が0件でない ix.ToString & "," & item.ToString & "(" & DT.Rows(0).Item(item.ToString).ToString & ")" 左からの順番,列名(1行目のデータ) 参考(列の情報の一覧)

Slide 22

Slide 22 text

DataTable型…どんな事ができる? 標準的なアクティビティ EXCELの行(1,2…)方向に追加、 削除するアクティビティ EXCELの列(A,B…)方向に追加、 削除するアクティビティ DataTableへの処理系★と DataTableの中身の処理系☆ ☆ ☆ ☆ ★ ☆ ★ ★ ★ ☆

Slide 23

Slide 23 text

アクティビティ編2 プログラミング未経験者に DataTableを教える 基本的なDataTable型ハンドリングが分かったら Presented By [email protected]

Slide 24

Slide 24 text

DataTable型…どのように使う? 標準的なDataTable型のハンドリング DataTable型の容れ物をメモリに確保 列名、属性を指定して、列確保 DataRow型の行の容れ物をメモリに確保 行の容れ物にデータを代入 DataTable型の容れ物に、DataRow型の行の容れ物を追加 DataTable型の容れ物から必要なデータをフィルタする 同じレイアウトのDataTable型をマージする DataTable型の容れ物を並び替える 他のDataTableと結合する DataTable型を出力する

Slide 25

Slide 25 text

DataTable型…どのように使う? EXCEL系アクティビティ DataTable型の容れ物をメモリに確保 列名、属性を指定して、列確保 DataRow型の行の容れ物をメモリに確保 行の容れ物にデータを代入 DataTable型の容れ物に、DataRow型の行の容れ物を追加 DataTable型の容れ物から必要なデータをフィルタする 同じレイアウトのDataTable型をマージする DataTable型の容れ物を並び替える 「範囲を読み込み」アクティビティ 「範囲を書き込み」アクティビティ 他のDataTableと結合する DataTable型の容れ物を出力する ※列の属性はObject型

Slide 26

Slide 26 text

DataTable型…どのように使う? DataTable型の容れ物から必要なデータをフィルタする ②実在する列 名 Or 列番号 ④フィルタ する値 ①条件合致 データを保持/ 削除 ⑤指定した列 を保持/削除 ⑥実在する列名 Or 列番号 入力データテーブル 出力データテーブル 入力データ テーブルを指 定しても可 • 数値とか日付とかでもフィルタ掛けられるが、全 行を対象に形式変換をする必要がある • フィルター行を設定しなければ、列レイアウト変 更として使える ③条件指定

Slide 27

Slide 27 text

DataTable型…どのように使う? 同じレイアウトのDataTable型をマージする ソースデータテーブル 保存先データテーブル 一致した列名にマージする • レイアウトは保存先に従う • Addの場合、保存先にない列は列追加される • Ignoreの場合、保存先にない列は無視される • Errorの場合、 DataExceptionにて異常終了する • AddWithKeyの場合、Addと同様だが、主キー情報も追加する ⇒普通はキー情報は存在しないので、Addと同意と捉える

Slide 28

Slide 28 text

DataTable型…どのように使う? DataTable型の容れ物を並び替える ソースデータテーブル 保存先データテーブル 並び替える列は一つだけ。複数キーは指定できない(後述) • インデッスクの場合、最左端を0として指定する ⇒1 など • 列の場合、DataColumnを指定する ⇒DT.Columns(1) など • 名前の場合、列名を指定する ⇒“Column1”、DT.Columns(1).ColumnName など • 存在しない列を指定した場合は異常終了する

Slide 29

Slide 29 text

DataTable型…どのように使う? 他のDataTableと結合する ソースデータテーブル 保存先データテーブル 突合させる列は複数指定可能 • 処理結果は、入力データテーブル1の右側に入力データテーブル2の 情報が展開される。列名が重複する場合は、「○○_1」のように後 置される • 結合型Innerの場合は、双方キー一致したもの • 結合型Leftの場合は、入力データテーブル1の全行と、キー一致し た入力データテーブル2の行が展開される • 結合型Fullの場合は、Leftに加えて、キー一致しなかった入力デー タテーブル2の行も展開される Col1 ColA キー1 V1 キー2 V2 Col1 ColB キー2 Y2 キー3 Y3 Col1 ColA Col1_1 ColB キー1 V1 キー2 V2 キー2 Y2 キー3 Y3 × = Inner Left Full ②実在する列 名 Or 列番号 ④実在する列 名 Or 列番号 ①結合 型 ③条件指 定 ※条件指定[=]は、VLOOKUPワークシート関数で検索方法に[完全一致(FALSE)]を指定したようなもの

Slide 30

Slide 30 text

DataTable型…どのように使う? 全列において重複している行を削除する 入力データテーブル 出力データテーブル 全列において重複している行を削除する • 列指定はできない ※EXCELでのイメージ

Slide 31

Slide 31 text

.NET活用編 プログラミング未経験者に DataTableを教える 基本的なDataTable型ハンドリングが分かったら Presented By [email protected]

Slide 32

Slide 32 text

DataTable型…こんな時どうする? DataTable型の容れ物を複数のキーで並び替える .NET .NETのDataView型の容れ物にあるSORT機能を利用する System.Data.DataView型の容れ物、DVを確保する Sort条件を、列名△{Asc | Desc}の形式で指定する DataTableの容れ物へ書き戻す ※列名は、文字列固定でも、「DV.Table.Columns(1).ToString」のようにする事も可能 ※Ascは昇順、Descは降順

Slide 33

Slide 33 text

DataTable型…こんな時どうする? 列の数を知りたい! .NET データテーブル.Columns.Count で取得可能 行の数を知りたい! データテーブル.Rows.Count で取得可能

Slide 34

Slide 34 text

DataTable型…こんな時どうする? 先頭行の列名”A”とC列目のデータが欲しい .NET データテーブル.Rows(0).Item("Column1") データテーブル.Rows(0).Item(2) で取得可能 最終行の”A”とC列目のデータが欲しい データテーブル.Rows(データテーブル.Rows.Count - 1).Item("Column1") データテーブル.Rows(データテーブル.Rows.Count - 1).Item(2) で取得可能 ※データテーブル上では、行の先頭は0であるため ※データテーブル上では、行の先頭は0であるため、最終行は件数から1を減じたものとなるため

Slide 35

Slide 35 text

DataTable型…こんな時どうする? あるテーブルの、構造だけを複製したい!(データは不要) .NET あるテーブルの、構造もデータも複製したい! ※.Copyをつけなくても代入できるが、コピー先のデータテーブルを操 作すると、コピー元のデータテーブルも変化してしまう

Slide 36

Slide 36 text

DataTable型…こんな時どうする? あるテーブルの、全行を消したい .NET あるテーブルの、列の名前を変えたい ※すでに存在している列名を設定しようとすると異常終了する ※「Clear」は大文字小文字を正確に!

Slide 37

Slide 37 text

DataTable型…こんな時どうする? 特定列において重複している行を削除する 応談 ご相談ください ※EXCELでのイメージ

Slide 38

Slide 38 text

DataTable型…こんな時どうする? 行と列を入れ替えたい 応談 ご相談ください ※EXCELでのイメージ

Slide 39

Slide 39 text

予告

Slide 40

Slide 40 text

データテーブル型に関しての 「かんたんデータテーブルアクティビティを UiPath Go!に申請します!