3.A.A.9. データセットをループする

この節では、収集したデータセットをループし、データを適切なデータ型にパースし、IfActivity を使ってデータセット内に含まれる異常なエントリにデフォルト値を割り当てる方法を学習します。最後に、sqldtと sqlrawdtの両方に行を追加します。このセクションの最後に、与えられたデータセットの 特徴をそのデータ 型とともに索引付けするための参照表があります。

まず、Foreach DataRowアクティビティをDatabase Scopeアクティビティ内のシーケンスにドラッグします。Enter a VB Expressionを含むフィールドの中に、amsterdamdtを挿入します。

Read ExcelWorkflowの例では、Read Excelアクティビティによって返されたDataTableからセルを読み取るのと同様に、データセットの各特徴は変数に割り当てられる必要があります。

ここでは4種類のデータが扱われています。これらはそれぞれ,SQL テーブルの bigint,double,date,varchar(255)に対応する。

Int64型の場合、ユーザーはInt64.Parseメソッドを使用してデータを解析する必要があります。

id_dataset変数の値をInt64.Parse(row.Item(0).ToString)とし、型をSystem.Data.Int64 とする例が示されています。続いて、残りの変数も設定します。これらは、“host_id“,price,minimum_nights,number_of_reviews,calculated_host_listings_countandavailability_365 です。

images/openrpa_workflow_examples_using_datatables_loop_through_dataset_assign_int64.png

この特定のInsideAirBnBデータセットでは、Double型のフィーチャーは、NULL値(つまり variable.ToString が “” を返す)か、CDbl()を使用して適切に変換できる数値のどちらかになります。

このように、NULL値と有効値を区別するために、IfActivityを使用しています。 また、row.item(xx)[...]を何度も記述しないように、一時変数<featureNameValue>をいくつか使用しています。

下図はその例で、temp 変数に latitudeValue、テーブルに挿入される実際の値をlatitudeとして設定しています。残りの変数も設定してください。これらはlongitudeと reviews_per_monthです。

images/openrpa_workflow_examples_using_datatables_loop_through_double_variables.png

DateTime型では、異常な入力に対してチェックするためにtemp 変数を 使用する必要があります。ここでは、先ほど示したIfActivityも使用していますが、唯一の違いは、デフォルト値が0ではなくNew System.DateTime(2011,10,12,0,0,0)と任意に設定されている点です。

images/openrpa_workflow_examples_using_datatables_loop_through_date_variable.png

最後の型はString です。ユーザがすべきことは、行のi番目のエントリを見つけ、データセット内の指定されたエントリとマッチさせ、.ToStringメソッドでStringにキャストすることです。OpenRPAは0からインデックスを開始することをユーザーに思い出させるのに便利です。

images/openrpa_workflow_examples_using_datatables_loop_through_string_variables.png

各指標の参照表は以下のとおりです。

id_dataset – Int64 – 0 場所名 – 文字列 – 1 host_id – Int64 – 2 host_name – 文字列 – 3 neighbourhood_group – 文字列 – 4 neighborhood – 文字列 – 5 latitude – Double – 6 longitude – Double – 7 room_type – 文字列 – 8 price – Int64 – 9 minimum_ights – Int64 – 10 number_of_views – Int64 – 11 last_views – DateTime – 12 reviews_permonth – Double – 13 calculated_reviews_permonth – String – 4.8 価格 – Int64 – 9 最小宿泊日数 – Int64 – 10 レビュー数 – Int64 – 11 last_review – DateTime – 12 reviews_per_month – Double – 13 calculated_host_listings_count – Int64 – 14 availability_365 – Int64 – 15 “$.

備考

OpenRPAでは、DataTableは値を保持するために使われる2次元の非シリアライズ可能なオブジェクトに相当します。これはij列の行列と考えることができます。i行は.Rows(n)属性でアクセスできます。nはアクセスしたい行の番号です(0から始まる)。j列には、.Item(n)属性を使ってアクセスします。nは、アクセスしたい列の番号-0から始まる-です。ここで、ユーザがRows属性にアクセスしなければならないことを思い出してください。したがって、ユーザがデータ テーブルの 3 行目の 2 列目にアクセスしたい場合は、.Rows(2).Item(1)属性を使用することになります。

備考

.NET APIでは、DataTable オブジェクトは、同じ名前のクラスのDataSet オブジェクト 含まれるインメモリデータの1つのテーブルに対応します。Excel ファイルを読み込むと、それは自動的にDataSetクラスに割り当てられ、すべてのシートは DataTableクラス(0からExcel ファイル内のシート数まで番号が付けられている)に保存されます。ここで、DataTableオブジェクトは大文字と小文字を区別することに注意してください。