5.2 TD を使った操作の効率化

慣れないうちはクエリを書き間違えて失敗することが多いと思います. ログを読むことがエラー原因特定の基本です. Presto と Hive のエラーエラーメッセージは形式が異なりますが, どちらも構文エラーに関するログは主に TD コンソールの Engine Logs に表れます. しかし Python 上で操作する場合, インターフェイスの都合上ログを見づらいかもしれません. pytd を使っていれば, エラーメッセージも Python コンソール上に表示されることがありますが, クエリの job ID をもとに TD コンソールで結果を表示することもできます. クライアントオブジェクトの .query_executed に最後に実行したジョブのIDがあります. これを URL につなげてコンソールへのリンクを作れます.

url = f'https://console.treasuredata.com/app/jobs/{tdcl.query_executed}'
from IPython.core.display import display, HTML
display(HTML(f'<a href="{url}">{tdcl.query_executed}</a>'))

または, td-client に ジョブ ID を指定することで, ログを文字列として取得できます. その結果は .debug に格納されます. .debug はディクショナリ型で, cmdout, stderr キーがそれぞれTDコンソールでの Output Logs, Engine Logs に対応します

job_result = td_client.job(tdcl.query_executed)
print(job_result.debug['Engine Logs'])