カタログテーブルへのクエリの実行
トピック
通常、カタログテーブルとビュー (名前が PG_
で始まる関係) を Amazon Redshift テーブルとビューに結合できます。
カタログテーブルは、Amazon Redshift がサポートしない多数のデータ型を使用します。クエリでカタログテーブルを Amazon Redshift テーブルに結合するときは、次のデータ型がサポートされます。
-
ブール
-
"char"
-
float4
-
int2
-
int4
-
int8
-
name
-
oid
-
text
-
varchar
サポートされないデータ型を持つ列を明示的または暗黙的に参照する結合クエリを記述すると、クエリはエラーを返します。カタログテーブルの一部で使用される SQL 関数も、PG_SETTINGS および PG_LOCKS テーブルで使用されるものを除いてサポートされません。
例えば、PG_STATS テーブルに対し、Amazon Redshift テーブルとの結合でクエリを実行することはできません。これは、関数がサポートされていないためです。
次のカタログテーブルとビューは、Amazon Redshift テーブルの情報に結合できる有益な情報を提供します。これらのテーブルの一部では、データ型と関数の制約のため、部分的なアクセスのみが許可されます。部分的にアクセス可能なテーブルにクエリを実行するときは、列を慎重に選択または参照してください。
次のテーブルは完全にアクセス可能で、サポートされない型または関数は含まれません。
次のテーブルは部分的にアクセス可能で、サポートされない型、関数、および切り捨てられたテキスト列をいくつか含みます。テキスト列の値は varchar(256) 値に切り捨てられます。
ここにリストされていないカタログテーブルはアクセス不可能であるか、Amazon Redshift 管理者にとって有益でない可能性があります。ただし、Amazon Redshift テーブルへの結合がクエリに含まれていない場合は、任意のカタログテーブルまたはビューに対してオープンにクエリを実行できます。
Postgres カタログテーブルの OID 列を結合列として使用できます。例えば、結合条件 pg_database.oid = stv_tbl_perm.db_id
は、STV_TBL_PERM テーブルで表示される DB_ID 列を持つ各 PG_DATABASE 行の内部データベースオブジェクト ID に一致します。OID 列は、テーブルからの選択時に表示されない内部プライマリキーです。カタログビューには OID 列はありません。
一部の Amazon Redshift 関数は、コンピューティングノードのみで実行される必要があります。ユーザーが作成したテーブルをクエリが参照すると、コンピューティングノードで SQL が実行されます。
カタログテーブルのみを参照するクエリ (PG_TABLE_DEF など、PG プレフィックスを持つテーブル) またはテーブルを参照しないクエリは、リーダーノードのみで実行されます。
コンピューティングノード関数を使用するクエリがユーザー定義のテーブルまたは Amazon Redshift システムテーブルを参照しない場合、次のエラーが返されます。
[Amazon](500310) Invalid operation: One or more of the used functions must be applied on at least one user created table.