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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
吉田彰宏
September 15, 2023
Technology
0
770
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
480
DMSCube祭り2024_パネルディスカッション
ayoshida
0
220
DMSCube_LT_初心者だった頃の自分に教えてあげたいこと.pdf
ayoshida
0
200
DMSCube_LT_DataSpider_気を付けろ_クラウド版はオンプレ版とここが違う_.pdf
ayoshida
0
110
Other Decks in Technology
See All in Technology
私たち準委任PdEは2つのプロダクトに挑戦する ~ソフトウェア、開発支援という”二重”のプロダクトエンジニアリングの実践~ / 20260212 Naoki Takahashi
shift_evolve
PRO
2
210
日本の85%が使う公共SaaSは、どう育ったのか
taketakekaho
1
250
Cosmos World Foundation Model Platform for Physical AI
takmin
0
980
データの整合性を保ちたいだけなんだ
shoheimitani
8
3.2k
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.7k
usermode linux without MMU - fosdem2026 kernel devroom
thehajime
0
240
会社紹介資料 / Sansan Company Profile
sansan33
PRO
15
400k
量子クラウドサービスの裏側 〜Deep Dive into OQTOPUS〜
oqtopus
0
150
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
220
Oracle Cloud Observability and Management Platform - OCI 運用監視サービス概要 -
oracle4engineer
PRO
2
14k
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
360
Amazon Bedrock Knowledge Basesチャンキング解説!
aoinoguchi
0
170
Featured
See All Featured
The Curious Case for Waylosing
cassininazir
0
240
Exploring anti-patterns in Rails
aemeredith
2
250
Mind Mapping
helmedeiros
PRO
0
90
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
280
The Curse of the Amulet
leimatthew05
1
8.7k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
77
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
53
Testing 201, or: Great Expectations
jmmastey
46
8.1k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.7k
Color Theory Basics | Prateek | Gurzu
gurzu
0
200
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)を利用しない ことが前提となります。 詳しくは、ヘルプのパラレルストリーミング処理 仕様制限 を参照してください。
今回は過去の私の試行錯誤の内容を紹介しましたが、 「こうするともっと良いよ」というものをご存じであれば、 お話をぜひ聞かせてください。
ご清聴ありがとうございました。 株式会社テトラ・コミュニケーションズ