Docly Child

テーブル同士を比較する(合成・差分抽出)

1009 views

この記事では、CompareTableアクションで差分を抽出したり、データを併合する方法を紹介します。

【できるようになること】

  • CompareTableでの差分抽出
  • CompareTableでのデータ併合
  • Comparetableでの重複しているデータの抽出

 ワークフローの設定例

ワークフローの設定方法は以下の通りです。

差分抽出では、2つのデータを比較して重複してないものだけ抽出できます。

取得してきたデータやスプレッドシートなどのデータから重複してないものを取得するのは、javascriptが必要でしたがこのアクションはコードなしで実行できます。

例:当日取得したデータと昨日取得したデータを比較し、当日分だけ抽出したい時

この場合は、データが多い当日のデータをcomparetableのlefttermに入れ、昨日分のデータをrighttermに入れると差分が取得できます。

詳細はワークフローサンプル1を参照

データ併合では、スプレッドシートやエクセル、CSVデータを足し合わせるのに便利です。

例:下記画像のようにサイトから落としてきたデータで最後の列がある時とない時で分かれる場合

こうした時に下記のような形でデータを併合すると備考がある場合、ない場合のデータどちらも合成したデータが作成できます。

 なお、この場合、最初の4列は必ず同じデータになるので identiferにA&B&C&Dと記入します。identiferは比較するデータに同じヘッダーがある場合記入します。

記入方法は、一番左をAとしてA&B&C&D,,,と列分&とアルファベットを追加する形式です。

 

最終的な実行イメージ

詳細はワークフローサンプル2を参照

 下記スクリーンショットのようにCSVやスプレッドシートのセルを比較する場合、一度ワークフローを実行するとidentiferの項目をUIで設定できるようになります。




1でデータの差分抽出、データの併合、2でデータの併合を行いましたが、これを使うことで重複しているデータの抽出も可能です。

1のように当日と昨日データを使う場合、差分抽出をし、当日データ-差分をcomparetableで行うと重複しているデータのみ抽出できます。

詳細はワークフローサンプル3を参照

# 変数に保存   当日取得したデータ
+store_value_4:
  action>: StoreValue
  key: ex1
  value: [["名前","年齢","会社名","年収"],["jane","32","tutorial","xxx"],["jacy","29","robotic","xxxx"],["janne","27","roboticcrowd","xxx"]]
  private: false

# 変数に保存     昨日取得したデータ
+store_value_3:
  action>: StoreValue
  key: ex2
  value: [["名前","年齢","会社名","年収"],["jane","32","tutorial","xxx"]]
  private: false

# テーブルを比較する  
+compare_table_2:
  action>: CompareTable
  leftTerm: ${ex1}
  rightTerm: ${ex2}
  method: subtract
  header: true
  private: false

# 変数に保存
+store_value_2:
  action>: StoreValue
  key: bb
  value: [["名前","年齢","会社名","年収","備考"],["jack","22","tutorial","xxx","parttime job only"]]
  private: false

# 変数に保存
+store_value_1:
  action>: StoreValue
  key: aa
  value: [["名前","年齢","会社名","年収"],["jane","32","tutorial","xxx"]]
  private: false

# テーブルを比較する
+compare_table_1:
  action>: CompareTable
  leftTerm: ${aa}
  rightTerm: ${bb}
  method: add
  identifier: '‘A&B&C&D’'
  header: true
  private: false
# 変数に保存      当日取得したデータ
+store_value_4:
  action>: StoreValue
  key: ex1
  value: [["名前","年齢","会社名","年収"],["jane","32","tutorial","xxx"],["jacy","29","robotic","xxxx"],["janne","27","roboticcrowd","xxx"]]
  private: false

# 変数に保存   昨日取得したデータ
+store_value_3:
  action>: StoreValue
  key: ex2
  value: [["名前","年齢","会社名","年収"],["jane","32","tutorial","xxx"]]
  private: false

# テーブルを比較する ex1にあってex2にない行を抽出
+compare_table_3:
  action>: CompareTable
  leftTerm: ${ex1}
  rightTerm: ${ex2}
  method: subtract
  header: true
  private: false

# 変数に保存
+store_value_6:
  action>: StoreValue
  key: subtracted
  value: +compare_table_3
  private: false

# テーブルを比較する ex1からex2に存在する行のみ抽出
+compare_table_4:
  action>: CompareTable
  leftTerm: ${ex1}
  rightTerm: ${subtracted}
  method: subtract
  header: true
  private: false

comparetable/compare tabel

このページは役に立ちましたか?