Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DataTableってなんだ
Search
HANACCHI
February 18, 2020
0
97
DataTableってなんだ
20200218 【縮小開催】RPA勉強&LT会!RPALT UiPathトーク~ Vol.2
HANACCHI
February 18, 2020
Tweet
Share
More Decks by HANACCHI
See All by HANACCHI
ChatGPTにテストデータを作ってもらう
hanacchi
0
99
AI JIMYで数独
hanacchi
0
10
メール本文をどうやっつけるか
hanacchi
0
260
2024年のローコード界隈最新事情~業務担当者でもAI・生成AIを活用できる!~
hanacchi
0
370
AI JIMY - 登壇(インストール編)
hanacchi
0
440
AI JIMY - 登壇(設定編)
hanacchi
0
400
AI JIMY - 登壇(実行編)
hanacchi
0
390
パスワードを保存しますか?
hanacchi
0
400
テスト系アクティビティを使ってみる
hanacchi
0
490
Featured
See All Featured
Producing Creativity
orderedlist
PRO
343
39k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
366
25k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
Unsuck your backbone
ammeep
669
57k
Building an army of robots
kneath
302
45k
Designing for Performance
lara
604
68k
What's in a price? How to price your products and services
michaelherold
244
12k
How to Think Like a Performance Engineer
csswizardry
22
1.3k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
51k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Measuring & Analyzing Core Web Vitals
bluesmoon
6
240
Transcript
DataTableってなんだ? プログラミング未経験者に DataTable型を教える
自己紹介 • 小﨑 肇(こざき はじめ⇒[ハナ]肇⇒はなっち!) • 59歳 もうすぐ… • 東京都豊島区⇒神奈川県川崎市中原区
• 趣味 自転車だったけど、最近はINGRESS • 職歴 かなり前に今の会社に入社。 COBOL⇒JAVA⇒EXCEL-VBA EXCEL-VBAでは、JP1-REPORTERとか、 SAGENT-REPORTERとか… UiPath歴は、21ヶ月… Presented By
[email protected]
• 内製化を進めるお客様先でロボット開発サポート中 • その中で、EXCEL上のセルをコピーして、 Webにペーストして...ってとこまで作成して、 そこから先どうしたら?と言う相談を受ける。 ⇒そこはDataTableだろうと思ってサポートする • 初心者向け社内教育は受講している。 ⇒変数とか、エレメントの概念は多少分かっている
• 社内教育では、DataTableに関しては単語だけ登場 • ITリテラシの高い方は、何とか独学している模様 プログラミング未経験者に DataTable型を教える
いきなりDataTable型を教える前に 変数ってなんだ? プログラミング未経験者に 変数を教える Presented By
[email protected]
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所はカラッポ
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に100円 100円をいれてみる ⇒ 足りないので商品が出てこない
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる ⇒ 足りたので商品が出てくる!
お金を溜める所に200円
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる
⇒ 足りたので商品が出てくる! • 100円+100円=200円と言う事が、自 動販売機には分かる! • 200円から150円の商品を買って、 お釣りが50円と言うのも分かる!
自動販売機で考えてみよう 自動販売機とは、ボタンを押すと、商品が出てくる機械 でも、売価以上のお金をいれないと、商品が出てこない 150 お金を溜める所に 50円 100円をいれてみる ⇒ 足りないので商品が出てこない もう100円をいれてみる
⇒ 足りたので商品が出てくる! • 100円+100円=200円と言う事が、自 動販売機には分かる! • 200円から150円の商品を買って、 お釣りが50円と言うのも分かる! 情報をためておく場所、名前を変数
では本題 プログラミング未経験者に DataTableを教える いきなりDataTable型を教える前に Presented By
[email protected]
DataTableって 引用元:https://qiita.com/tizonaColada_99/items/9212d35722af3bd5bc9f DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。
DataTableって DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。 引用元:私が考えた(^^♪ DataTableとは、EXCELのシートのようにセルの縦横集合体として格納されているデータの事です。 行毎に、列位置を指定する事で、セルを指定し、EXCELシートのようにデータを格納しています。
DataTableって DataTableとは、データベースのように表形式で格納されているデータの事です。 列を指定し、行毎にデータを指定して行く事で、テーブルのようにデータを格納します。 引用元:私が考えた(^^♪ DataTableとは、EXCELのシートのようにセルの横集合体として格納されているデータの事です。 行毎に、列位置を指定する事で、セルを指定し、EXCELシートのようにデータを格納しています。 データを格納 容れ物の型を「DataTable型」、 容れ物の名前を「変数」と言う。 DataTable型
「変数」 Int32型 「変数」 Int64型 「変数」 String型 「変数」 〔参考〕
DataTable型って DataTable型には、列情報(ヘッダー情報)として、DataColumn型が一つ存在する 列情報には、列定義が1以上存在する 列情報には、ほかに重複しない列名が必要である 列情報には、どんなデータを格納するかの列形式が存在する
DataTable型って DataTable型には、行情報(データ情報)として、DataRow型が0以上存在する 行情報には、列毎の列形式に沿ったデータが格納される
DataTable型って DataTable型のデータを参照/設定は、 ① データテーブルの ② (ある)行の ③ (ある)列 の順である。 ②
③ 例:B4セル相当位置 DataTable.Rows(3).Item(1) ←※2 ↑※1 Or ↓※1 DataTable.Rows(3).Item("Column1") ※1 行の先頭は0から始まる ※2 最左端列は0から始まる
DataTable型…EXCEL編 EXCELシート上のデータを扱うには、DataTable型で処理した方が便利な時がある • 格納されているデータのすべてを処理したい • 格納されているデータの一部分を特定し、そのデータを処理したい のように、対象とするデータがたくさんある場合である 例:B4セルが空白かどうか知りたい 例:B列に空白があるかどうか知りたい
アクティビティ編 プログラミング未経験者に DataTableを教える 基本的なDataTable型が分かったら Presented By
[email protected]
DataTable型…EXCEL編…どのように使う EXCELアプリケーションスコープの中に、「範囲を読み込み」アクティビティを配する フィルタの使用 ▪オートフィルタ掛かっているデータだけ □オートフィルタ掛かっていても、全データ ヘッダーの追加 ▪一行目をヘッダー情報とする □一行目をヘッダー情報とせず、 UiPathに任せる 表示形式を維持(値が1,234だったら)
▪1,234として格納 □1234として格納 対象とするシート名 対象とする範囲指定 “” :UiPath自動判断 “A1” :A1セルを基準に獲得 その他 :指定セルを基準に獲得 格納されるDataTable型の変数(DT) 他のアクティビティの入力へ
DataTable型…EXCEL編…どのように使う 「繰り返し (各行)」アクティビティで、全行を対象にする 繰り返し(各行) データテーブル:DT 現在のインデックス:ix(int32) ix.ToString & "," &
row.Item(1).ToString & "," & row.Item("Column1").ToString 例:B列が空白かどうか知りたい
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行目のデータ) 参考(列の情報の一覧)
DataTable型…どんな事ができる? 標準的なアクティビティ EXCELの行(1,2…)方向に追加、 削除するアクティビティ EXCELの列(A,B…)方向に追加、 削除するアクティビティ DataTableへの処理系★と DataTableの中身の処理系☆ ☆ ☆
☆ ★ ☆ ★ ★ ★ ☆
アクティビティ編2 プログラミング未経験者に DataTableを教える 基本的なDataTable型ハンドリングが分かったら Presented By
[email protected]
DataTable型…どのように使う? 標準的なDataTable型のハンドリング DataTable型の容れ物をメモリに確保 列名、属性を指定して、列確保 DataRow型の行の容れ物をメモリに確保 行の容れ物にデータを代入 DataTable型の容れ物に、DataRow型の行の容れ物を追加 DataTable型の容れ物から必要なデータをフィルタする 同じレイアウトのDataTable型をマージする DataTable型の容れ物を並び替える
他のDataTableと結合する DataTable型を出力する
DataTable型…どのように使う? EXCEL系アクティビティ DataTable型の容れ物をメモリに確保 列名、属性を指定して、列確保 DataRow型の行の容れ物をメモリに確保 行の容れ物にデータを代入 DataTable型の容れ物に、DataRow型の行の容れ物を追加 DataTable型の容れ物から必要なデータをフィルタする 同じレイアウトのDataTable型をマージする DataTable型の容れ物を並び替える
「範囲を読み込み」アクティビティ 「範囲を書き込み」アクティビティ 他のDataTableと結合する DataTable型の容れ物を出力する ※列の属性はObject型
DataTable型…どのように使う? DataTable型の容れ物から必要なデータをフィルタする ②実在する列 名 Or 列番号 ④フィルタ する値 ①条件合致 データを保持/
削除 ⑤指定した列 を保持/削除 ⑥実在する列名 Or 列番号 入力データテーブル 出力データテーブル 入力データ テーブルを指 定しても可 • 数値とか日付とかでもフィルタ掛けられるが、全 行を対象に形式変換をする必要がある • フィルター行を設定しなければ、列レイアウト変 更として使える ③条件指定
DataTable型…どのように使う? 同じレイアウトのDataTable型をマージする ソースデータテーブル 保存先データテーブル 一致した列名にマージする • レイアウトは保存先に従う • Addの場合、保存先にない列は列追加される •
Ignoreの場合、保存先にない列は無視される • Errorの場合、 DataExceptionにて異常終了する • AddWithKeyの場合、Addと同様だが、主キー情報も追加する ⇒普通はキー情報は存在しないので、Addと同意と捉える
DataTable型…どのように使う? DataTable型の容れ物を並び替える ソースデータテーブル 保存先データテーブル 並び替える列は一つだけ。複数キーは指定できない(後述) • インデッスクの場合、最左端を0として指定する ⇒1 など •
列の場合、DataColumnを指定する ⇒DT.Columns(1) など • 名前の場合、列名を指定する ⇒“Column1”、DT.Columns(1).ColumnName など • 存在しない列を指定した場合は異常終了する
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)]を指定したようなもの
DataTable型…どのように使う? 全列において重複している行を削除する 入力データテーブル 出力データテーブル 全列において重複している行を削除する • 列指定はできない ※EXCELでのイメージ
.NET活用編 プログラミング未経験者に DataTableを教える 基本的なDataTable型ハンドリングが分かったら Presented By
[email protected]
DataTable型…こんな時どうする? DataTable型の容れ物を複数のキーで並び替える .NET .NETのDataView型の容れ物にあるSORT機能を利用する System.Data.DataView型の容れ物、DVを確保する Sort条件を、列名△{Asc | Desc}の形式で指定する DataTableの容れ物へ書き戻す ※列名は、文字列固定でも、「DV.Table.Columns(1).ToString」のようにする事も可能
※Ascは昇順、Descは降順
DataTable型…こんな時どうする? 列の数を知りたい! .NET データテーブル.Columns.Count で取得可能 行の数を知りたい! データテーブル.Rows.Count で取得可能
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を減じたものとなるため
DataTable型…こんな時どうする? あるテーブルの、構造だけを複製したい!(データは不要) .NET あるテーブルの、構造もデータも複製したい! ※.Copyをつけなくても代入できるが、コピー先のデータテーブルを操 作すると、コピー元のデータテーブルも変化してしまう
DataTable型…こんな時どうする? あるテーブルの、全行を消したい .NET あるテーブルの、列の名前を変えたい ※すでに存在している列名を設定しようとすると異常終了する ※「Clear」は大文字小文字を正確に!
DataTable型…こんな時どうする? 特定列において重複している行を削除する 応談 ご相談ください ※EXCELでのイメージ
DataTable型…こんな時どうする? 行と列を入れ替えたい 応談 ご相談ください ※EXCELでのイメージ
予告
データテーブル型に関しての 「かんたんデータテーブルアクティビティを UiPath Go!に申請します!