投稿

ラベル(DataSpider)が付いた投稿を表示しています

Translate

DataSpiderでお手軽に配列でマッチングするみたいな事をする方法

イメージ
データスパイダーで気軽に配列通しのマッチングを行う方法 DataSpiderで配列のようなマッチングを気軽に行う方法 Excelで、店マスターや、商品マスターシートのような物があって、データにある商品コードや、店コード等から、商品名や、店名を取得したい事がある場合、DataSpiderでFor分を使ってマッチングをさせると、とてつもなく処理に長い時間がかかってしまう。 直ぐに思いつくのが、配列変数のようなものに値を一度セットしてしまい、処理を高速にしたいと思いがちだが..... DataSpiderの変数には、配列変数というような物が無い為、配列のような物に値を保持したいと思うと、標準の機能だと、下記のようになる。 DataSpiderで、配列チックな変数に値を保持したいと思うと、変数を必要分だけ複数用意して、変数代入コンポーネント内で、値をセットするような事になる。 でも、この方法だと、保持が必要なデータの数が確定していないと、必要な数の変数が特定出来ないし、そもそも、変数を沢山準備するだけでも大変だ。 この方法で、変数に値を設定し、配列通しで値をマッチングするような事をしようとすると、とても途方もない作業になるし、データスパイダーは、For-Loopを使用してIF分で、変数代入や、マッピングコンポーネントを切り替えるみたいにすると、とても処理が遅くなってしまう為、データ量が多いときは実用的で無くなり、とても大変だ。 そのような場合、次に紹介する方法を使用すると、高速且つ、変数の数を気にせずに、配列通しのマッチングが可能だ。 配列に格納したようなマッチングを高速に行いたい場合のデザイン方法 データ上の商品コードなどを高速に置換する方法は、ForコンポーネントとIFコンポーネントを組み合わせて使用するのではなく、マッパー(Mapping)コンポーネント内で、CSVファイルによる置換コンポーネントを使用すれば良い。 この方法だと、DataSpiderでは驚く程変換処理が早い。 今回は、データスパイダーで、SQL等データベース上での容易なマッチングが行えない環境下で、高速にマッチング処理を行う方法についての紹介でした。

DataSpiderのファイル処理が遅い原因は大体コレ

イメージ
DataSpider(データスパイダー)でファイル出力で注意した方が良いこと データスパイダーで0こういう作り方は処理が物凄く遅くなる。 データスパイダーで、何かのデータを読み取って条件によって値を変えたり等の変換する際に、可読性を考えて下記の様にすると、とても処理が遅くなる。 なるべくコンポーネントの中を開かなくても、デザイナーのスクリプトキャンパスを見ただけでどういうことをしているか分かるようにしたいと思って、こういう作り方をすると、データスパイダーの場合はとてつもなく処理が遅くなる。 DataSpiderで何かのデータを読み取って処理を書く際に、条件分岐のIF等を表のスクリプトキャンパス上で描いてしまうとどうやらとても遅くなるようだ。 Loopコンポーネントがとてつもなく処理を遅くするようで、筆者はこの現象を、データスパイダーはLoop処理に弱いと表現している。 解決策はある。 DataSpiderではこう作り変えると処理が早くなる。 スクリプトを開いた際の、スクリプトキャンパス上だけでは、処理の詳細が見えなくなってしまい、可読視認性が下がってしまうが、マッパー内で条件分岐させる場合には、処理が早くなる。 マッパー内で分岐させる文には、For分等のループ処理が不要となる為、ループコンポーネント処理に弱いデータスパイダーで処理が遅くなってしまう事を回避出来る。 コーディングが得意な人達にとっては、ちょっとした処理をサブルーチンに飛ばすと可読性が悪くなる為、小さな処理ぐらいは表にFor文を書いて可読性を上げたいと思う人もいるかも知れないが、ノーコードプログラミングでは視認性も大切だが、使用しているノーコードプログラミングの癖を攻略しながらのコーディングの方が重要だと筆者は考える。 今回の例だと、たった数千件の処理が、最初の例だと数分かかるのに対して、Mapper内で条件分岐させた場合には、数秒で終わる。 如何に、癖を攻略する事が大切だと解るだろう。