

 Amazon Redshift は、2026 年 6 月 30 日以降、Python UDF の使用をサポートしなくなります。これは段階的に実施されます。Python のサポート終了と移行オプションの詳細については、2025 年 6 月 30 日に公開された[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# システムテーブルのクエリ
<a name="discovering-metadata-system-tables"></a>

ドライバーメタデータ API も `SHOW` コマンドもニーズに合わない場合は、PostgreSQL カタログテーブル (`pg_*`)、情報スキーマ (`information_schema`)、`SVV_TABLE_INFO` などの Amazon Redshift システムビューに対して直接クエリを実行できます。

このアプローチは、Amazon Redshift Query Editor v2 や `psql` など、インタラクティブな SQL クエリから実行するアドホック検索、デバッグ、または管理タスクに役立ちます。ただし、システムカタログ構造は各 Amazon Redshift リリースで変更される可能性があります。本番稼働アプリケーション統合のメタデータインターフェイスとして、システムテーブルのクエリに直接依存することはお勧めしません。

システムテーブルに対してクエリを実行するときは、次のプラクティスに従います。
+ **データベース、スキーマ、およびテーブルを指定します**。最善のパフォーマンスを得るには、クエリフィルターにデータベース名、スキーマ名、およびテーブル名を含めます。スコープを絞り込むと、Amazon Redshift がスキャンして返す必要があるメタデータの量が減ります。
+ **等価フィルターまたは LIKE フィルターを使用します**。`WHERE` 句で等価 (`=`) または `LIKE` 述語を使用して結果を絞り込みます。大規模なカタログビューに対して、フィルタリングされていないクエリを実行することは避けてください。オブジェクトが多いクラスターではクエリが低速になる可能性があります。
+ **フィルター述語で関数を使用しないでください**。システムテーブルクエリをフィルタリングするときは、`WHERE` 句で `LOWER()` や文字列連結などの関数を使用しないでください。これらの操作を行うと、メタデータの効率的な検索が妨げられ、クエリのパフォーマンスが大幅に低下する可能性があります。

## アンチパターンと推奨クエリの比較の例
<a name="r_QUERY_LIST-examples"></a>

```
-- Avoid:
SELECT * FROM svv_all_columns;

-- Recommended:
SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public' AND table_name = 'sales';
```

```
-- Avoid:
SELECT * FROM svv_all_columns WHERE LOWER(schema_name) = 'public';

-- Recommended:
SELECT * FROM svv_all_columns WHERE schema_name = 'public' AND table_name LIKE 'sales%';
```

```
-- Avoid:
SELECT * FROM svv_all_columns WHERE database_name || '.' || schema_name || '.' || table_name = 'dev.public.sales';

-- Recommended:
SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public' AND table_name = 'sales';
```

```
-- Avoid:
SELECT * FROM svv_all_columns WHERE CONCAT(database_name, '.', schema_name) = 'dev.public';

-- Recommended:
SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public';
```