Redshift の STL テーブルのクエリID(query列)と SYS ビューのクエリID(query_id)は別の値のため、クエリIDで結合することはできない。トランザクションID(STLとSYSのトランザクションIDが 1:1 の場合)で結合することができる。
Redshift の STL テーブルと SYS ビュー - ablog
STL_QUERY と SYS_QUERY_HISTORY を CSV(|区切り)に出力したファイルを transaction_id(xid) で結合してして、query と query_id の対応表を作成したメモ。
- STL_QUERY から query と xid だけを抽出して重複排除する。
perl -F'\|' -lane 'print qq/$F[3]|$F[4]/' STL_QUERY.csv|sort -u > STL_QUERY_qid_xid.csv
- SYS_QUERY_HISTORY から query_id と transaction_id だけを抽出して重複排除する。
perl -F'\|' -lane 'print qq/$F[1]|$F[3]/' SYS_QUERY_HISTORY.csv|sort -u > SYS_QUERY_HISTORY_qid_xid.csv
- 作成した2ファイルを結合して対応表を作成する。
- 列は transaction_id、query_id、query という並び。
join -t'|' -1 2 -2 2 SYS_QUERY_HISTORY_qid_xid.csv STL_QUERY_qid_xid.csv > query_id_query.csv