5.2 TD を使った操作の効率化
慣れないうちはクエリを書き間違えて失敗することが多いと思います. ログを読むことがエラー原因特定の基本です. Presto と Hive のエラーエラーメッセージは形式が異なりますが, どちらも構文エラーに関するログは主に TD コンソールの Engine Logs に表れます. しかし Python 上で操作する場合, インターフェイスの都合上ログを見づらいかもしれません. pytd
を使っていれば, エラーメッセージも Python コンソール上に表示されることがありますが, クエリの job ID をもとに TD コンソールで結果を表示することもできます. クライアントオブジェクトの .query_executed
に最後に実行したジョブのIDがあります. これを URL につなげてコンソールへのリンクを作れます.
= f'https://console.treasuredata.com/app/jobs/{tdcl.query_executed}'
url from IPython.core.display import display, HTML
f'<a href="{url}">{tdcl.query_executed}</a>')) display(HTML(
または, td-client に ジョブ ID を指定することで, ログを文字列として取得できます. その結果は .debug
に格納されます. .debug
はディクショナリ型で, cmdout
, stderr
キーがそれぞれTDコンソールでの Output Logs, Engine Logs に対応します
= td_client.job(tdcl.query_executed)
job_result print(job_result.debug['Engine Logs'])