STL_QUERYTEXT - Amazon Redshift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

STL_QUERYTEXT

Menangkap teks kueri untuk perintah SQL.

Kueri tampilan STL_QUERYTEXT untuk menangkap SQL yang dicatat untuk pernyataan berikut:

  • PILIH, PILIH KE

  • MASUKKAN, PERBARUI, HAPUS

  • MENYONTEK

  • MEMBONGKAR

  • Kueri yang dihasilkan dengan menjalankan VACUUM dan ANALYSIS

  • BUAT TABEL SEBAGAI (CTAS)

Untuk melakukan kueri aktivitas pernyataan ini selama periode waktu tertentu, gabungkan tampilan STL_QUERYTEXT dan STL_QUERY.

catatan

Tampilan STL_QUERY dan STL_QUERYTEXT hanya berisi informasi tentang kueri, bukan utilitas dan perintah DDL lainnya. Untuk daftar dan informasi tentang semua pernyataan yang dijalankan oleh Amazon Redshift, Anda juga dapat menanyakan tampilan STL_DDLTEXT dan STL_UTILITYTEXT. Untuk daftar lengkap semua pernyataan yang dijalankan oleh Amazon Redshift, Anda dapat menanyakan tampilan SVL_STATEMENTTEXT.

Lihat jugaSTL_DDLTEXT,STL_UTILITYTEXT, danSVL_STATEMENTTEXT.

STL_QUERYTEXT dapat dilihat oleh semua pengguna. Pengguna super dapat melihat semua baris; pengguna biasa hanya dapat melihat data mereka sendiri. Untuk informasi selengkapnya, lihat Visibilitas data dalam tabel dan tampilan sistem.

Beberapa atau semua data dalam tabel ini juga dapat ditemukan di tampilan SYS_QUERY_TEXT pemantauan SYS. Data dalam tampilan pemantauan SYS diformat agar lebih mudah digunakan dan dipahami. Kami menyarankan Anda menggunakan tampilan pemantauan SYS untuk pertanyaan Anda.

Kolom tabel

Nama kolom Jenis data Deskripsi
userid integer ID pengguna yang membuat entri.
xid bigint ID Transaksi.
pid integer ID Proses. Biasanya, semua kueri dalam sesi dijalankan dalam proses yang sama, jadi nilai ini biasanya tetap konstan jika Anda menjalankan serangkaian kueri dalam sesi yang sama. Setelah peristiwa internal tertentu, Amazon Redshift mungkin memulai ulang sesi aktif dan menetapkan PID baru. Untuk informasi selengkapnya, lihat STL_RESTARTED_SESSIONS. Anda dapat menggunakan kolom ini untuk bergabung dengan STL_ERROR tampilan.
kueri integer ID kueri. Kolom kueri dapat digunakan untuk bergabung dengan tabel dan tampilan sistem lainnya.
urutan integer Ketika satu pernyataan berisi lebih dari 200 karakter, baris tambahan dicatat untuk pernyataan itu. Urutan 0 adalah baris pertama, 1 adalah yang kedua, dan seterusnya.
text karakter (200) Teks SQL, dalam peningkatan 200 karakter. Bidang ini mungkin berisi karakter khusus seperti garis miring terbalik (\\) dan baris baru (). \n

Kueri Sampel

Anda dapat menggunakan fungsi PG_BACKEND_PID () untuk mengambil informasi untuk sesi saat ini. Misalnya, query berikut mengembalikan ID query dan sebagian dari teks query untuk query selesai dalam sesi saat ini.

select query, substring(text,1,60) from stl_querytext where pid = pg_backend_pid() order by query desc; query | substring -------+-------------------------------------------------------------- 28262 | select query, substring(text,1,80) from stl_querytext where 28252 | select query, substring(path,0,80) as path from stl_unload_l 28248 | copy category from 's3://dw-tickit/manifest/category/1030_ma 28247 | Count rows in target table 28245 | unload ('select * from category') to 's3://dw-tickit/manifes 28240 | select query, substring(text,1,40) from stl_querytext where (6 rows)

Merekonstruksi SQL yang disimpan

Untuk merekonstruksi SQL yang disimpan di text kolom STL_QUERYTEXT, jalankan pernyataan SELECT untuk membuat SQL dari 1 atau lebih bagian dalam kolom. text Sebelum menjalankan SQL yang direkonstruksi, ganti setiap (\n) karakter khusus dengan baris baru. Hasil dari pernyataan SELECT berikut adalah baris SQL direkonstruksi di lapangan. query_statement

SELECT query, LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END) WITHIN GROUP (ORDER BY sequence) as query_statement, COUNT(*) as row_count FROM stl_querytext GROUP BY query ORDER BY query desc;

Misalnya, query berikut memilih 3 kolom. Kueri itu sendiri lebih panjang dari 200 karakter dan disimpan di bagian-bagian dalam STL_QUERYTEXT.

select 1 AS a0123456789012345678901234567890123456789012345678901234567890, 2 AS b0123456789012345678901234567890123456789012345678901234567890, 3 AS b012345678901234567890123456789012345678901234 FROM stl_querytext;

Dalam contoh ini, kueri disimpan dalam 2 bagian (baris) di text kolom STL_QUERYTEXT.

select query, sequence, text from stl_querytext where query=pg_last_query_id() order by query desc, sequence limit 10;
query | sequence | text -------+----------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 45 | 0 | select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234 45 | 1 | \nFROM stl_querytext;

Untuk merekonstruksi SQL yang disimpan di STL_QUERYTEXT, jalankan SQL berikut.

select LISTAGG(CASE WHEN LEN(RTRIM(text)) = 0 THEN text ELSE RTRIM(text) END, '') within group (order by sequence) AS text from stl_querytext where query=pg_last_query_id();

Untuk menggunakan SQL yang direkonstruksi yang dihasilkan di klien Anda, ganti karakter khusus (\n) apa pun dengan baris baru.

text ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ select\n1 AS a0123456789012345678901234567890123456789012345678901234567890,\n2 AS b0123456789012345678901234567890123456789012345678901234567890,\n3 AS b012345678901234567890123456789012345678901234\nFROM stl_querytext;