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
DMSCube_LT_初心者だった頃の自分に教えてあげたいこと_その2.pdf
Search
吉田彰宏
September 15, 2023
Technology
0
330
DMSCube_LT_初心者だった頃の自分に教えてあげたいこと_その2.pdf
2023.09.13 DMS Cube トーーク!のLT資料
https://dmscube.com/view/event/7118
吉田彰宏
September 15, 2023
Tweet
Share
More Decks by 吉田彰宏
See All by 吉田彰宏
DMSCube_DataSpiderの見逃しがちな便利機能(データチェック処理編)
ayoshida
1
49
DMSCube祭り2024_パネルディスカッション
ayoshida
0
120
DMSCube_LT_初心者だった頃の自分に教えてあげたいこと.pdf
ayoshida
0
150
DMSCube_LT_DataSpider_気を付けろ_クラウド版はオンプレ版とここが違う_.pdf
ayoshida
0
80
Other Decks in Technology
See All in Technology
Oracle GoldenGate 23ai 導入Tips
oracle4engineer
PRO
1
280
見えづらい活動の成果の伝え方は日頃からめちゃくちゃ悩んでるけど、実際こんな取り組みをしな がら温度感を合わせにいってるよ / Conveying Hard-to-See Results
kakehashi
4
1.9k
Castor - Le Task Runner PHP qui simplifie votre Workflow
lyrixx
1
250
O'Reilly Superstream: Building a RAG App to Chat with Your Data
pamelafox
0
120
【㈱アイモバイル】エンジニア向け会社説明資料
imobile
0
470
スタサプ ForSCHOOLアプリのシンプルな設計
recruitengineers
PRO
3
610
Azure App Service on Linux の Sidecar に Phi-3 を配置してインテリジェントなアプリケーションを作ってみよう/jazug-anniv14
thara0402
0
470
コード✕AIーソフトウェア開発者のための生成AI実践入門~
yuhattor
3
830
電子辞書にステータスバーを実装する
puhitaku
0
110
普通の Web エンジニアのための様相論理入門 #yapcjapan / YAPC Hakodate 2024
ytaka23
5
1.5k
AWSの初級者向けAI・ML資格『AWS Certified AI Practitioner』の傾向と対策/So You Want To Pass AWS Certified AI Practitioner
quiver
0
450
LINE-ChatGPT 倫理問題を整理する全力肯定彼氏くん [LuC4]に訪れたサービス開始以来の最大の危機
o_ob
2
150
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
26
4.1k
GraphQLの誤解/rethinking-graphql
sonatard
65
9.9k
Designing on Purpose - Digital PM Summit 2013
jponch
114
6.9k
No one is an island. Learnings from fostering a developers community.
thoeni
19
2.9k
Automating Front-end Workflow
addyosmani
1365
200k
Side Projects
sachag
452
42k
The Pragmatic Product Professional
lauravandoore
31
6.2k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
7
580
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
27
1.9k
Documentation Writing (for coders)
carmenintech
65
4.4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
26
2k
Making the Leap to Tech Lead
cromwellryan
131
8.8k
Transcript
2023年 9月13日 株式会社テトラ・コミュニケーションズ 初心者だった頃の自分に 教えてあげたいこと その2
名前: 吉田 彰宏 現職: 株式会社テトラ・コミュニケーションズ 生命保険会社に特化した業務&システムコンサルティング及び システムの開発・構築・運用・保守 DataSpider歴: 2009年~現在 オンプレ版を利用することが多く、クラウド版の利用は少々。
会社の資格試験報奨金の対象にDataSpider認定資格が含まれる ようになったため、Advanceの受験に再チャレンジを検討中。
DataSpiderを使い始めた時、 分からない点を聞ける人が周りにいましたか?
私の場合、 お客様、同僚、含めて有識者ゼロ。 前任者が作った設計書、スクリプトを 読み解くことに。。。。
最初の頃は、無駄に複雑なことをやったりもしていました。 しかし、少しずつ 「あれ、こんな風にできるんだ」という気づき 「こうすれば便利だな」という発見 をするようになりました。 そういった情報を前回に続き、紹介します。
教えてあげたいこと try~catchのエラーメッセージの拾い方
DataSpiderの便利機能(try~catch) ①の枠内のどこかでエラーが発生すると、 ②に処理が移り、その後、try~catchを抜ける。 ① ② 直感的で分かりやすい!
DataSpiderの便利機能(try~catch) どんな情報を取得できるかも 一目瞭然!! 変数名を覚える 必要がなくて楽チン
DataSpiderの便利機能(try~catch) ある時、エラーが発生!! こんな時のためのアプリケーションログ。 中身を確認すると・・・
DataSpiderの便利機能(try~catch) 赤枠の3つアイコンのどこかでエラーが発生していることに なります。でも・・・、どこで起きている? せっかくログに出力したのに、 エラーメッセージを見ても分からない。。。 2023/09/12 09:51:39 [INFO] [スクリプト001] 処理を開始します。
2023/09/12 09:51:39 [ERROR] [スクリプト001] エラーが発生しました。 [com.appresso.ds.vp.mapper.fastconverter.CannotConvertException|2列目でエラー発生: Columnロジック - String型からBigDecimal型に変換できませんでした] 2023/09/12 09:51:39 [INFO] [スクリプト001] 処理を終了します。
DataSpiderの便利機能(try~catch) 改善してみよう その1 問題 try~catchに複数のアイコンを配置するからエラーメッセージの 区別がつかなくなってしまっている。 対応 それならtry~catchを細かく配置すればいいのでは!?
try~catchを改善してみよう その1 見分けがつきやすいように アプリケーションログにも メッセージを追加。 これならOKなはず。。。
これなら、ひと目でマッピング処理でエラーが起きていると分かる!! 2023/09/12 09:48:52 [INFO] [スクリプト002] 処理を開始します。 2023/09/12 09:48:52 [ERROR] [スクリプト002]
マッピング処理でエラーが発生しました。 [com.appresso.ds.vp.mapper.fastconverter.CannotConvertException|2列目でエラー発生: Columnロジック - String型からBigDecimal型に変換できませんでした] try~catchを改善してみよう その1
待っていたのはtry~catch地獄。。。 画面中がtry~catchだらけ。 スクリプトも見にくくなり、やたら長くなってしまうことに。 try~catchを改善してみよう その1
DataSpiderの便利機能(try~catch) 改善してみよう その2 問題 try~catchの数はできるだけ増やさず、かつ、どのアイコンで 発生したエラーであるかをどうやって区別すればよいのか? 対応 エラーが発生すると、そのアイコンのerror_typeに情報が 設定されるはず。そこで判断できるのでは!?
try~catchを改善してみよう その2 処理フローは一番最初と同じ。 やはりtry~catchは少ない方がよいですね。
try~catchを改善してみよう その2 そのかわりに変数Mapperを頑張ってみた!!
try~catchを改善してみよう その2 csv_readのerror_typeが 空ではない場合、エラー メッセージを組み立て、 スクリプト変数へ設定。 その変数の値をログへ出力。 csv_readのerror_typeが空の場合、 次のアイコンのerror_typeのチェックに移る。
これなら、ひと目でマッピング処理でエラーが起きていると分かる!! 2023/09/12 10:07:32 [INFO] [スクリプト003] 処理を開始します。 2023/09/12 10:07:32 [ERROR] [スクリプト003]
エラーが発生しました。[マッピング処理 |com.appresso.ds.vp.mapper.fastconverter.CannotConvertException|2列目でエラー発生: Columnロジック - String型からBigDecimal型に変換できませんでした] 2023/09/12 10:07:32 [INFO] [スクリプト003] 処理を終了します。 try~catchを改善してみよう その2
待っていたのは変数Mapper地獄。。。 先ほどのたった3つのアイコンでもMapper画面がぐちゃぐちゃに。 これ以上のアイコン追加は勘弁してください。 ぐちゃぐちゃなため、マッピングミスも発生。 try~catchを改善してみよう その2
DataSpiderの便利機能(try~catch) 改善してみよう その3 問題 try~catchの数はできるだけ増やさず、かつ、シンプルなマッピングで どのアイコンで発生したエラーであるかをどうやって区別すれば よいのか? 対応 DataSpiderにはきっと便利な機能があるはず!! ヘルプを見ながら試行錯誤の旅へ。
try~catchを改善してみよう その3 ヘルプにはこう書かれているけど、 まずは使ってみよう! ずっと無視をしていたけど、 君たちは何者??
try~catchを改善してみよう その3 処理フローは一番最初と同じ。 変数Mapperもシンプルに。 結果はいかに。
この方法でも、ひと目でマッピング処理でエラーが起きていると分かる!! try~catchの数も抑え、マッピングも簡単。 求めていたものに、やっとたどり着きました。 2023/09/12 10:46:43 [INFO] [スクリプト004] 処理を開始します。 2023/09/12 10:46:43
[ERROR] [スクリプト004] エラーが発生しました。[mapping|変換/基本/マッピング |com.appresso.ds.vp.mapper.fastconverter.CannotConvertException|2列目でエラー発生: Columnロジック - String型からBigDecimal型に変換できませんでした] 2023/09/12 10:46:43 [INFO] [スクリプト004] 処理を終了します。 try~catchを改善してみよう その3 component_name component_type
素朴な疑問 先ほどのログにはcomponent_nameにmappingと表示されていたけど、 スクリプト内にMapperが複数ある場合は区別がつくの? try~catchを改善してみよう その3 2023/09/12 10:46:43 [INFO] [スクリプト004] 処理を開始します。
2023/09/12 10:46:43 [ERROR] [スクリプト004] エラーが発生しました。[mapping|変換/基本/マッピング |com.appresso.ds.vp.mapper.fastconverter.CannotConvertException|2列目でエラー発生: Columnロジック - String型からBigDecimal型に変換できませんでした] 2023/09/12 10:46:43 [INFO] [スクリプト004] 処理を終了します。
結果 問題なし!! try~catchを改善してみよう その3 2023/09/12 11:06:43 [INFO] [スクリプト004] 処理を開始します。 2023/09/12
11:06:43 [ERROR] [スクリプト004] エラーが発生しました。[CSVファイルmapping|変換/基本/マッピ ング|com.appresso.ds.vp.mapper.fastconverter.CannotConvertException|2列目でエラー発生: Columnロジック - String型からBigDecimal型に変換できませんでした] 2023/09/12 11:06:43 [INFO] [スクリプト004] 処理を終了します。 component_nameとはこの名前のこと。
注意点 今回紹介したスクリプト、および、実行結果は、 パラレルストリーミング処理(PSP)を利用しない ことが前提となります。 詳しくは、ヘルプのパラレルストリーミング処理 仕様制限 を参照してください。
今回は過去の私の試行錯誤の内容を紹介しましたが、 「こうするともっと良いよ」というものをご存じであれば、 お話をぜひ聞かせてください。
ご清聴ありがとうございました。 株式会社テトラ・コミュニケーションズ