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
690
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
390
DMSCube祭り2024_パネルディスカッション
ayoshida
0
200
DMSCube_LT_初心者だった頃の自分に教えてあげたいこと.pdf
ayoshida
0
190
DMSCube_LT_DataSpider_気を付けろ_クラウド版はオンプレ版とここが違う_.pdf
ayoshida
0
110
Other Decks in Technology
See All in Technology
MCP ✖️ Apps SDKを触ってみた
hisuzuya
0
250
混合雲環境整合異質工作流程工具運行關鍵業務 Job 的經驗分享
yaosiang
0
140
「魔法少女まどか☆マギカ Magia Exedra」の多様なバトルの開発を柔軟かつ効率的に実現するためのPure C#とUnityの分離について
gree_tech
PRO
0
230
ソースを読むプロセスの例
sat
PRO
15
9.7k
速習AGENTS.md:5分で精度を上げる "3ブロック" テンプレ
ismk
6
1.9k
OAuthからOIDCへ ― 認可の仕組みが認証に拡張されるまで
yamatai1212
0
150
それでも私が品質保証プロセスを作り続ける理由 #テストラジオ / Why I still continue to create QA process
pineapplecandy
0
150
[2025年10月版] Databricks Data + AI Boot Camp
databricksjapan
1
230
ハノーファーメッセ2025で見た生成AI活用ユースケース.pdf
hamadakoji
0
300
初めてのDatabricks Apps開発
taka_aki
1
230
OCIjp_Oracle AI World_Recap
shinpy
1
150
Introdução a Service Mesh usando o Istio
aeciopires
1
270
Featured
See All Featured
Fireside Chat
paigeccino
40
3.7k
Balancing Empowerment & Direction
lara
5
700
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Music & Morning Musume
bryan
46
6.9k
The Cult of Friendly URLs
andyhume
79
6.6k
Statistics for Hackers
jakevdp
799
220k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
560
Become a Pro
speakerdeck
PRO
29
5.6k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
A better future with KSS
kneath
239
18k
For a Future-Friendly Web
brad_frost
180
10k
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)を利用しない ことが前提となります。 詳しくは、ヘルプのパラレルストリーミング処理 仕様制限 を参照してください。
今回は過去の私の試行錯誤の内容を紹介しましたが、 「こうするともっと良いよ」というものをご存じであれば、 お話をぜひ聞かせてください。
ご清聴ありがとうございました。 株式会社テトラ・コミュニケーションズ