• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialdevelopment

redshift-guide

プラグイン
aws-data-analytics
ソース
GitHub で見る ↗
説明

Amazon Redshift は PostgreSQL ではありません — PostgreSQL から派生した言語モデルの誤りを修正し、Redshift 固有の SQL、DDL(データベース定義言語)、COPY/UNLOAD、システムビュー、メタデータ発見、運用パターンをカバーします。このスキルは Redshift 自体(クラスター、サーバーレスワークグループ、または Redshift SQL)に関するタスクの場合に限り適用されます。 **対応しない PostgreSQL 機能:** CREATE INDEX、string_agg、pg_catalog、text 型、SERIAL、stl_query、LATERAL、RETURNING などは Redshift では異なるため、これらに関する指摘を行います。 **このスキルが対象とするトピック:** Redshift SQL、Redshift CREATE TABLE、Redshift COPY/UNLOAD、Redshift クエリの遅さ、Redshift アクセス権限エラー、Redshift ディスク容量不足、Redshift システムビュー、QUALIFY、PIVOT、MERGE、Redshift Data API、Redshift WLM(ワークロード管理)、コンカレンシースケーリング、Redshift のリサイズ、Redshift Spectrum 外部テーブル **対象外のサービス:** Amazon S3 ストレージ/バケットポリシー、Athena または Glue のクエリ/カタログ、Redshift 外での データレイク(大規模データ統合)や Iceberg 処理、Aurora、RDS、DynamoDB については、各サービスの専用スキルに委譲します。 ただし S3 と Glue は、Redshift の COPY、UNLOAD、またはデータレイククエリ(S3 上の外部スキーマ/テーブル)に関連する場合は対象範囲に含まれます。

原文を表示

Amazon Redshift is NOT PostgreSQL — corrects PostgreSQL-derived LLM mistakes; covers Redshift-specific SQL, DDL, COPY/UNLOAD, system views, metadata discovery, and operational patterns. Applies ONLY when the task is about Redshift itself (cluster, Serverless workgroup, or Redshift SQL). Pushes back on: CREATE INDEX, string_agg, pg_catalog, text type, SERIAL, stl_query, LATERAL, RETURNING. Triggers on: Redshift SQL, Redshift CREATE TABLE, Redshift COPY/UNLOAD, slow Redshift query, Redshift permission denied, Redshift disk full, Redshift system views, QUALIFY, PIVOT, MERGE, Redshift Data API, Redshift WLM, concurrency scaling, Redshift resize, Redshift Spectrum external tables. Does NOT apply to (defer to that service's own skill): Amazon S3 storage/bucket policies, Athena or Glue queries/catalogs, data-lake or Iceberg work outside Redshift, Aurora, RDS, or DynamoDB — but S3/Glue ARE in scope for Redshift COPY, UNLOAD, or data-lake queries (external schemas/tables on S3).

ユースケース
  • PostgreSQL との違いを修正するとき
  • Redshift SQL のクエリを最適化するとき
  • テーブル作成やCOPY/UNLOAD を実行するとき
  • アクセス権限やディスク容量のエラーを解決するとき
  • Redshift のシステムビュー・メタデータを確認するとき
本文(日本語訳)

Amazon Redshift ガイド

Redshift は PostgreSQL ではありません(最初にお読みください)

Redshift は PostgreSQL の通信プロトコルを使い、その表面的な構文の多くを共有しているため、AI は PostgreSQL の動作がそのまま Redshift にも当てはまると仮定しがちです。しかし実際には、頻繁に異なる動作をします。相違点は、システムテーブル(pg_catalog は不完全)、DDL(インデックスやシーケンスがない)、関数(string_agg、テーブルに対する SUBSTR、リーダーノードのみの関数)、データ型(text 列は VARCHAR(256) になる)、比較の意味論(末尾の空白、強制されない制約)など多岐にわたります。

相違があると仮定して、以下の参照資料に照らして確認してください——PostgreSQL の習慣だけで答えないでください。 一般的な PostgreSQL から Redshift への相違点は references/redshift-sql-syntax.md に記載されています。

最適な環境: AWS MCP サーバー——以下の AWS CLI と Redshift Data API 呼び出しをサンドボックス環境で監査ログ付きで実行します。ここでの説明はすべて通常の AWS CLI と SQL であり、このサーバーなしでも動作します。

ステップ 0:サーバーレスか専有型か?

答える前にこれを確認してください——API、システムテーブル、機能が異なります。質問に明記されていればそれに従い、明記されていなければ確認しましょう。SELECT version() では判別できません。

  • サーバーレス——ワークグループ(と名前空間)で識別されます。Data API 呼び出しは --workgroup-name を使用;ユーザーは「ワークグループ」「サーバーレス」と言及します。
  • 専有型——クラスターで識別されます。Data API 呼び出しは --cluster-identifier を使用;ユーザーは「クラスター」と言及します。
ターゲット システムビュー 認証 API
専有型 SYS_、すべての SVV_ + STL_、STV_、SVL_、SVCS_(シングル AZ のみ——マルチ AZ では無効) redshift:GetClusterCredentials
サーバーレス SYS_ + SVV_ のサブセットのみ(STL/STV/SVL/SVCS_ なし) redshift-serverless:GetCredentials

重要なポイント

  • SHOW コマンドは主要なメタデータインターフェース——SHOW DATABASES、SHOW SCHEMAS、SHOW TABLES、SHOW COLUMNS、SHOW TABLE、SHOW VIEW。pg_catalog や information_schema にデフォルトで頼らないでください。→ メタデータ・検索の質問や「リレーション(テーブルなどの関係オブジェクト)が存在しない」というエラー報告があれば、references/redshift-sql-metadata.md を読み込んでください——診断フローが記載されています。

  • SYS_ ビューが推奨システムビュー——どこでも機能します。STL_、STV_、SVL_、SVCS_ は専有型シングル AZ のみであり、一部の SVV_ ビューはサーバーレスで未対応です。→ システムビューやモニタリングの質問があれば、references/redshift-sql-metadata.md を読み込んでください。

  • sys_load_error_detail——COPY のデバッグ用(stl_load_errors ではなく、これは専有型シングル AZ のみ)。

  • DATEADD/DATEDIFF——単位を最初の引数とする順序:DATEADD(day, -30, GETDATE())、DATEDIFF(day, start, end)。

  • APPROXIMATE COUNT(DISTINCT col)——Redshift 固有の機能、約 2% の誤差で、大規模データセットでの正確な COUNT(DISTINCT) より高速。

  • MERGE ... REMOVE DUPLICATES——ソースとターゲットのスキーマが同じときの簡略化された重複排除。

  • COPY は IAM_ROLE を使用(呼び出し元のロールではなく名前空間ロール)+ 明示的なファイルリスト用に MANIFEST に対応 + エラー許容度用に MAXERROR に対応。

  • SUBSTR() はリーダーノードのみ——リテラル(固定値)では機能しますが、テーブル列ではエラーになります(「SUBSTR() 関数はサポートされていません(ヒント:代わりに SUBSTRING を使用してください)」)。列には SUBSTRING() を使用。

  • UNIQUE / PRIMARY KEY / FOREIGN KEY は情報提供のみ——強制されません(重複行は エラーなしで受け入れられます)。オプティマイザーへのヒント;整合性はアプリケーションで、または MERGE 経由で強制してください。NOT NULL は強制されます。

  • SHOW VIEW <schema.name>——通常のビュー、マテリアライズドビュー(事前計算済みビュー)、またはレイトバインディングビューの定義を返します。MV の鮮度:SVV_MV_INFO(is_stale)。

  • TOP N と LIMIT N の両方が機能します(TOP N PERCENT は機能しません)。text 列は VARCHAR(256) になります——VARCHAR(max) または明示的な長さを使用。

  • Iceberg テーブルは CREATE TABLE ... USING ICEBERG を使用(STORED AS ICEBERG ではなく、TABLE_FORMAT=ICEBERG でもなく)。

  • Datashare(データ共有)は読み取りと書き込み操作に対応——プロデューサーが書き込み権限を付与すれば、コンシューマーは書き込み可能です。Datashare 書き込みでの「権限がありません」を不足している付与として扱ってください。非対応操作ではありません。→ 要件と制限については、references/redshift-sql-metadata.md を読み込んでください。

安全性ガードレール

ブロック: DROP DATABASE、WHERE なしの DELETE、publicly-accessible=true、GRANT ALL ON ALL

警告してから確認: RESIZE、RESTORE、大規模テーブルへの VACUUM、ALTER PASSWORD、WLM(ワークロード管理)設定変更

確認: CREATE、具体的な GRANT、COPY、UNLOAD

セキュリティに関する考慮事項

接続、読み込み、またはエクスポートするものを生成する際に、これらのデフォルトを適用してください。詳細は記載されている参照ファイルにあります。

  • 転送中: Data API は HTTPS のみです。JDBC/ODBC の場合、require_ssl パラメーターを設定し、sslmode=verify-full で接続してサーバー証明書が検証されるようにしてください。

  • 保存時: クラスター/名前空間の暗号化を有効に保ち、UNLOAD に ENCRYPTED KMS_KEY_ID '<arn>' を追加してください——Redshift 自体の暗号化の外にある S3 にクエリ結果を書き込みます。→ references/redshift-sql-ddl-copy.md

  • 認証情報: SecretArn(Secrets Manager)または IAM Identity Center を優先;DbUser は一時的な認証情報を発行するため受け入れ可能です。データベースパスワードをコード、環境変数、SQL テキストに配置しないでください。→ references/redshift-sql-recipes-load-api.md

  • 最小権限の原則: 名前空間 IAM_ROLE を特定のバケットとプレフィックス(arn:aws:s3:::<bucket>/<prefix>/* に対する s3:GetObject)にスコープ化し、s3:* や全アクセス管理ポリシーを使用しないでください。信頼ポリシーを aws:SourceArn(クラスター/名前空間 ARN)と aws:SourceAccount の両方で条件付けてください——SourceArn だけでは、アカウント内の別のリソースがそれを仮定することが可能です。GRANT ALL ON ALL ではなく、オブジェクト単位の権限を付与してください。

  • 監査: CloudTrail は redshift-data:* API 呼び出しを記録しますが、実行された SQL は記録しません。Redshift 監査ログ(useractivitylog、connectionlog、userlog)を有効にしてそれを取得してください。どちらもクエリテキストとユーザー活動を取得するため、使用中のすべての宛先を暗号化してください:CloudWatch Logs グループ(aws logs associate-kms-key)、CloudTrail トレイル(SSE-KMS)、監査ログ S3 バケット(SSE-S3——S3 への監査ログは S3 マネージドキーのみに対応し、KMS には非対応)。サーバーレスは CloudWatch への監査ログ送信のみに対応。

  • ネットワーク: PubliclyAccessible=false に保ち、VPC エンドポイント経由で接続してください。ポート 5439 を 0.0.0.0/0 または ::/0 に公開しないでください——インバウンドルールを特定の CIDR またはセキュリティグループ参照にスコープ化してください。

  • センシティブデータ: Data API 結果は 24 時間保持され、sys_load_error_detail は拒否された行のフラグメントをエコーバックする可能性があるため、ステートメント ID と読み込みエラー出力をセンシティブとして扱ってください。

  • 参考資料: Security in Amazon Redshift これらのデフォルトの背景にある完全なガイダンス。

ルーティングテーブル

必須: 下の行に質問が一致する場合、答える前に参照ファイルを読み込んで 必ず 読んでください。

トラブルシューティングの手順を提供する前に、ターゲットが専有型かサーバーレスかを確認してください——質問に既に明記されている場合はそれを使用し、再確認しないでください。

ユーザーの意図 ルート
「CREATE TABLE」「DISTKEY/SORTKEY」「ENCODE」「IDENTITY」「COPY」「UNLOAD」「IAM_ROLE」「Iceberg テーブル」 references/redshift-sql-ddl-copy.md
「LISTAGG」「DATEADD/DATEDIFF」「NVL/DECODE」「型マッピング」「text 型」「VARBYTE」「再帰的 CTE」 references/redshift-sql-functions-types.md
「QUALIFY」「PIVOT/UNPIVOT」「MERGE」「TOP N」「SUBSTR エラー」「UNIQUE/PK は強制されない」「末尾の空白」「リーダーノード関数」「JSON」「SUPER」「PartiQL」「ネストされた/半構造化データ」 references/redshift-sql-extensions-semantics.md
「システムビュー」「SVV_/SYS_」「SHOW コマンド」「STL vs SYS」「テーブルのリスト」「distkey/sortkey ルックアップ」「datashare 検出」「2 部 vs 3 部」「権限がありません」「GRANT」「権限」「リレーション/テーブルが存在しない」 references/redshift-sql-metadata.md
「SQL を書くにはどうすればよいか」「PostgreSQL vs Redshift」「どの SQL リファレンス」一般的な方言の質問 references/redshift-sql-syntax.md(6 つの SQL リファレンスのインデックス + PostgreSQL vs Redshift 失敗テーブル)
「COPY に失敗」「読み込みエラー」「Data API ポーリング」「非同期クエリ」「Data API スロットル」 references/redshift-sql-recipes-load-api.md
「マテリアライズドビュー」「MV リフレッシュ」「AUTO REFRESH」「古いビュー」 references/redshift-sql-materialized-views.md
上記に一致しない一般的な Redshift の質問 一般知識から直接回答
Aurora、RDS、DynamoDB、Athena(Redshift 以外) 拒否。 このスキルは Amazon Redshift のみ対応と述べてください。他のデータベースサービスのガイダンスは提供しないでください。

Data API クイックリファレンス

→ Data API、COPY エラー、または非同期クエリの質問に答える前に、references/redshift-sql-recipes-load-api.md を読み込んでください。 境界ポーリングループ、HasResultSet と ResourceNotFoundException 処理、ターゲット別パラメーター、認証オプションが記載されています。

Data API 呼び出しは デフォルトで非同期です——ブラインドスリープではなく長めのポ

原文(English)を表示

Amazon Redshift Guide

Redshift is NOT PostgreSQL (read first)

Redshift speaks PostgreSQL's wire protocol and shares much of its surface syntax, so LLMs assume PostgreSQL behavior carries over — it frequently does not. Divergences span system tables (pg_catalog is incomplete), DDL (no indexes, no sequences), functions (string_agg, SUBSTR on tables, leader-node-only functions), types (a text column becomes VARCHAR(256)), and comparison semantics (trailing blanks, unenforced constraints). Assume divergence and verify against the reference below — do not answer from PostgreSQL habit. Common PostgreSQL→Redshift divergences are in references/redshift-sql-syntax.md.

Works best with the AWS MCP server — it runs the AWS CLI and Redshift Data API calls below in a sandboxed, audit-logged environment. All guidance here is plain AWS CLI and SQL and works without it.

STEP 0: Serverless or Provisioned?

Establish this before answering — APIs, system tables, and capabilities differ. Take it from the question when it says which one; ask when it does not. SELECT version() does not identify it.

  • Serverless — identified by a workgroup (and namespace). Data API calls take --workgroup-name; the user says "workgroup"/"Serverless".
  • Provisioned — identified by a cluster. Data API calls take --cluster-identifier; the user says "cluster".
Target System Views Credentials API
Provisioned SYS_, all SVV_ + STL_, STV_, SVL_, SVCS_ (single-AZ only — disabled on Multi-AZ) redshift:GetClusterCredentials
Serverless SYS_ + a subset of SVV_ ONLY (no STL/STV/SVL/SVCS) redshift-serverless:GetCredentials

Critical Facts

  • SHOW commands are the primary metadata interface — SHOW DATABASES, SHOW SCHEMAS, SHOW TABLES, SHOW COLUMNS, SHOW TABLE, SHOW VIEW. Do NOT default to pg_catalog or information_schema. → Load references/redshift-sql-metadata.md for metadata/discovery questions and any "relation does not exist" report — it has the diagnostic flow.
  • SYS_ views are the preferred system views — they work everywhere. STL_, STV_, SVL_, and SVCS_ are provisioned single-AZ only, and some SVV_ views are unsupported on Serverless. → Load references/redshift-sql-metadata.md for any system-view or monitoring question.
  • sys_load_error_detail for COPY debugging (not stl_load_errors, which is provisioned single-AZ only).
  • DATEADD/DATEDIFF — unit-first argument order: DATEADD(day, -30, GETDATE()), DATEDIFF(day, start, end).
  • APPROXIMATE COUNT(DISTINCT col) — Redshift-specific, ~2% error, much faster than exact COUNT(DISTINCT) on large datasets.
  • MERGE ... REMOVE DUPLICATES — simplified dedup when source and target have identical schemas.
  • COPY should use IAM_ROLE (the namespace role, not the caller role) + supports MANIFEST for explicit file lists + MAXERROR for error tolerance.
  • SUBSTR() is leader-node-only — works on literals but errors on table columns (SUBSTR() function is not supported (Hint: use SUBSTRING instead)). Use SUBSTRING() on columns.
  • UNIQUE / PRIMARY KEY / FOREIGN KEY are informational only — NOT enforced (duplicate rows are accepted with no error). Optimizer hints; enforce integrity in the application or via MERGE. NOT NULL IS enforced.
  • SHOW VIEW <schema.name> returns the definition of a regular view, materialized view, or late-binding view. MV freshness: SVV_MV_INFO (is_stale).
  • TOP N and LIMIT N both work (TOP N PERCENT does not). A text column becomes VARCHAR(256) — use VARCHAR(max) or explicit length.
  • Iceberg tables use CREATE TABLE ... USING ICEBERG (not STORED AS ICEBERG, not TABLE_FORMAT=ICEBERG).
  • Datashares support read and write operations — consumers can write once the producer grants write privileges. Treat "permission denied" on a datashare write as a missing grant, not an unsupported operation. → Load references/redshift-sql-metadata.md for requirements and limits.

Safety Guardrails

BLOCK: DROP DATABASE, DELETE without WHERE, publicly-accessible=true, GRANT ALL ON ALL WARN then confirm: RESIZE, RESTORE, VACUUM on large tables, ALTER PASSWORD, WLM config change Confirm: CREATE, GRANT specific, COPY, UNLOAD

Security Considerations

Apply these defaults when generating anything that connects, loads, or exports. Details are in the reference files noted.

  • In transit: the Data API is HTTPS-only. For JDBC/ODBC set the require_ssl parameter and connect with sslmode=verify-full so the server certificate is checked.
  • At rest: keep cluster/namespace encryption enabled, and add ENCRYPTED KMS_KEY_ID '<arn>' to UNLOAD — it writes query results to S3, outside Redshift's own encryption. → references/redshift-sql-ddl-copy.md
  • Credentials: prefer SecretArn (Secrets Manager) or IAM Identity Center; DbUser is acceptable because it issues temporary credentials. Never place database passwords in code, environment variables, or SQL text. → references/redshift-sql-recipes-load-api.md
  • Least privilege: scope the namespace IAM_ROLE to the specific bucket and prefix (s3:GetObject on arn:aws:s3:::<bucket>/<prefix>/*), not s3:* or a managed full-access policy, and condition its trust policy on both aws:SourceArn (the cluster/namespace ARN) and aws:SourceAccount — SourceArn alone still allows another resource in the account to assume it. Grant per-object privileges rather than GRANT ALL ON ALL.
  • Audit: CloudTrail records redshift-data:* API calls but not the SQL executed; enable Redshift audit logging (useractivitylog, connectionlog, userlog) for that. Both capture query text and user activity, so encrypt every destination in use: the CloudWatch Logs group (aws logs associate-kms-key), the CloudTrail trail (SSE-KMS), and the audit-log S3 bucket (SSE-S3 — audit logging to S3 supports only S3-managed keys, not KMS). Serverless only supports sending audit logs to CloudWatch.
  • Network: keep PubliclyAccessible=false and connect over a VPC endpoint. Do not open port 5439 to 0.0.0.0/0 or ::/0 — scope inbound rules to specific CIDRs or to a referencing security group.
  • Sensitive data: Data API results persist for 24h and sys_load_error_detail can echo fragments of rejected rows, so treat statement IDs and load-error output as sensitive.
  • Further reading: Security in Amazon Redshift for the full guidance behind these defaults.

Routing Table

MANDATORY: When a question matches a row below, you MUST load and read the referenced file BEFORE answering.

Ask whether the target is provisioned or Serverless before giving troubleshooting steps — unless the question already says which one, in which case use that and do not re-confirm.

User Intent Route To
"CREATE TABLE", "DISTKEY/SORTKEY", "ENCODE", "IDENTITY", "COPY", "UNLOAD", "IAM_ROLE", "Iceberg table" references/redshift-sql-ddl-copy.md
"LISTAGG", "DATEADD/DATEDIFF", "NVL/DECODE", "type mapping", "text type", "VARBYTE", "recursive CTE" references/redshift-sql-functions-types.md
"QUALIFY", "PIVOT/UNPIVOT", "MERGE", "TOP N", "SUBSTR error", "UNIQUE/PK not enforced", "trailing blanks", "leader-node function", "JSON", "SUPER", "PartiQL", "nested/semi-structured data" references/redshift-sql-extensions-semantics.md
"system view", "SVV_/SYS_", "SHOW commands", "STL vs SYS", "list tables", "distkey/sortkey lookup", "datashare discovery", "2-part vs 3-part", "permission denied", "GRANT", "privileges", "relation/table does not exist" references/redshift-sql-metadata.md
"how do I write SQL", "PostgreSQL vs Redshift", "which SQL reference", general dialect question references/redshift-sql-syntax.md (index of the 6 SQL references + PostgreSQL-vs-Redshift failure table)
"COPY failed", "load error", "Data API poll", "async query", "Data API throttle" references/redshift-sql-recipes-load-api.md
"materialized view", "MV refresh", "AUTO REFRESH", "stale view" references/redshift-sql-materialized-views.md
General Redshift question not matching above Answer directly from general knowledge
Aurora, RDS, DynamoDB, Athena (non-Redshift) REFUSE. State this skill is for Amazon Redshift only. Do not provide guidance for other database services.

Data API Quick Reference

→ Load references/redshift-sql-recipes-load-api.md before answering ANY Data API, COPY-error, or async-query question. It carries the bounded poll loop, the HasResultSet and ResourceNotFoundException handling, the per-target parameters, and the auth options.

Data API calls are async by default — use long polling (--wait-time-seconds, 1–30) rather than blind sleeps, and keep a bounded loop for work that can exceed 30s. Serverless takes --workgroup-name, provisioned takes --cluster-identifier.

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。