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
95
DataTableってなんだ
20200218 【縮小開催】RPA勉強&LT会!RPALT UiPathトーク~ Vol.2
HANACCHI
February 18, 2020
Tweet
Share
More Decks by HANACCHI
See All by HANACCHI
メール本文をどうやっつけるか
hanacchi
0
230
2024年のローコード界隈最新事情~業務担当者でもAI・生成AIを活用できる!~
hanacchi
0
350
AI JIMY - 登壇(インストール編)
hanacchi
0
410
AI JIMY - 登壇(設定編)
hanacchi
0
380
AI JIMY - 登壇(実行編)
hanacchi
0
370
パスワードを保存しますか?
hanacchi
0
380
テスト系アクティビティを使ってみる
hanacchi
0
440
君も小説家になろう!
hanacchi
0
190
トライ キャッチの闇
hanacchi
0
95
Featured
See All Featured
A better future with KSS
kneath
238
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Side Projects
sachag
452
42k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
250
21k
Mobile First: as difficult as doing things right
swwweet
222
8.9k
A Tale of Four Properties
chriscoyier
156
23k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
The Invisible Side of Design
smashingmag
298
50k
Why Our Code Smells
bkeepers
PRO
334
57k
Optimizing for Happiness
mojombo
376
70k
BBQ
matthewcrist
85
9.3k
RailsConf 2023
tenderlove
29
900
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!に申請します!