Skip to main content

sql-federated-queries

Query Redpanda topics as SQL tables through Redpanda catalogs in Redpanda SQL on Redpanda Cloud BYOC, including the Iceberg history of Iceberg-enabled topics in the same query. Use when mapping a topic with CREATE TABLE default_redpanda_catalog=>name, choosing schema subject, error handling, struct mapping, or key and header decoding options, reading the redpanda metadata column, querying nested fields, querying live and Iceberg records together through a catalog linked with USING CATALOG, running REFRESH after a schema change, or inspecting catalogs with SHOW, DESCRIBE, and the catalog-metadata system tables. For SQL syntax, functions, data types, and GRANT syntax, see `/redpanda:sql`. For enabling, scaling, users, roles, and the access model, see `/redpanda:sql-admin-api`. For failing or slow queries, see `/redpanda:sql-debugging`.

소스 정보

저장소
redpanda-data/skills
최근 소스 활동
2026년 10월 22일 23:40
감지된 SKILL.md 언어
영어
스타
8
포크
4

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
6 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
sql-federated-queries
description
Query Redpanda topics as SQL tables through Redpanda catalogs in Redpanda SQL on Redpanda Cloud BYOC, including the Iceberg history of Iceberg-enabled topics in the same query. Use when mapping a topic with CREATE TABLE default_redpanda_catalog=>name, choosing schema subject, error handling, struct mapping, or key and header decoding options, reading the redpanda metadata column, querying nested fields, querying live and Iceberg records together through a catalog linked with USING CATALOG, running REFRESH after a schema change, or inspecting catalogs with SHOW, DESCRIBE, and the catalog-metadata system tables. For SQL syntax, functions, data types, and GRANT syntax, see `/redpanda:sql`. For enabling, scaling, users, roles, and the access model, see `/redpanda:sql-admin-api`. For failing or slow queries, see `/redpanda:sql-debugging`.
# Redpanda SQL: Query Topics Through Catalogs Redpanda SQL is the managed analytical SQL engine on Redpanda Cloud BYOC (including BYOVPC) clusters. It reads Redpanda topics in place: each topic is mapped to a SQL table through a **Redpanda catalog**, and its columns come from the topic's schema in Schema Registry (Avro, Protobuf, or JSON). For Iceberg-enabled topics, a Redpanda catalog that is linked to an **Iceberg catalog** returns live records and the Iceberg-committed history in one result. **Redpanda SQL is read-only.** `INSERT`, `UPDATE`, `DELETE`, and `COPY FROM` are not available. Data enters through Redpanda topics; `CREATE TABLE` only maps a topic to a table through a catalog and never creates a standalone table with a user-defined schema. Connect with `psql` or any PostgreSQL client using the connection details on the **SQL** tab of the cluster's *How to connect* panel in the Cloud Console (see `/redpanda:sql` for connection and authentication). --- ## What Redpanda Cloud sets up for you When Redpanda SQL is enabled on a cluster: - A Redpanda catalog named **`default_redpanda_catalog`** (in schema `public`) is created and points at the cluster. Map topics through it; you normally do not need `CREATE REDPANDA CATALOG`. - If the cluster has an Iceberg REST catalog configured (`iceberg_catalog_type = rest`), Redpanda Cloud also creates a storage connection and an Iceberg catalog that match the cluster's REST catalog configuration, and links `default_redpanda_catalog` to that Iceberg catalog (`USING CATALOG`, with `pandaproxy_url` set). You don't run `CREATE STORAGE`, `CREATE ICEBERG CATALOG`, or `ALTER REDPANDA CATALOG ... USING CATALOG` yourself for this workflow. Leave these managed objects as Redpanda Cloud configured them. To see what was created, run: ```sql DESCRIBE REDPANDA CATALOG default_redpanda_catalog; -- tables and topic mappings SELECT name, iceberg_catalog FROM system.kafka_connections; -- linked Iceberg catalog SHOW ICEBERG CATALOGS; ``` Do not hardcode the managed Iceberg catalog or storage names; read them from `system.kafka_connections.iceberg_catalog`, `SHOW ICEBERG CATALOGS`, or `SHOW CATALOGS`. --- ## Quickstart ```sql -- 1. Map a topic (its value schema must be registered in Schema Registry). CREATE TABLE default_redpanda_catalog=>orders WITH ( topic = 'orders', schema_subject = 'orders-value' -- optional; default is '<topic>-value' ); -- 2. Query it like any table. SELECT * FROM default_redpanda_catalog=>orders LIMIT 10; SELECT customer_id, SUM(amount) AS total FROM default_redpanda_catalog=>orders WHERE status = 'completed' GROUP BY customer_id ORDER BY total DESC LIMIT 10; -- 3. Record metadata lives in the auto-added `redpanda` struct column. SELECT (redpanda).partition, (redpanda)."offset", (redpanda).timestamp, order_id FROM default_redpanda_catalog=>orders WHERE (redpanda).timestamp >= now() - INTERVAL '1 hour'; -- 4. Nested fields (default struct_mapping_policy = 'COMPOUND'). SELECT order_id, (customer).name, (customer).region FROM default_redpanda_catalog=>orders WHERE (customer).region = 'EMEA'; ``` If the topic is Iceberg-enabled and `default_redpanda_catalog` is linked to an Iceberg catalog, the same `SELECT` returns live records plus Iceberg-committed history with no overlap. Redpanda SQL plans the union; you don't write `UNION ALL`. See [iceberg.md](references/iceberg.md). --- ## Catalog model | Object | What it is | Statements | |--------|------------|------------| | Storage connection | Named object-storage credentials (`TYPE = S3 \| GCS`) that back an Iceberg catalog | `CREATE` / `ALTER` / `DROP STORAGE`, `DESCRIBE STORAGE` | | Redpanda catalog | Connection to a Redpanda cluster (brokers + Schema Registry, optional HTTP Proxy) | `CREATE` / `ALTER` / `DROP REDPANDA CATALOG`, `DESCRIBE REDPANDA CATALOG` | | Iceberg catalog | Connection to an Iceberg REST catalog; used only when linked to a Redpanda catalog | `CREATE` / `ALTER` / `DROP ICEBERG CATALOG`, `DESCRIBE ICEBERG CATALOG` | | Table | A topic mapped as `catalog_name=>table_name` | `CREATE` / `ALTER` / `DROP TABLE`, `DESCRIBE TABLE`, `REFRESH` | Catalogs live in a schema (`public` by default; qualify as `schema.catalog_name` to use another). Querying an Iceberg catalog's tables on their own (outside a linked Redpanda catalog) is not supported. A **view** is not a catalog object: it stores a `SELECT` query in a SQL schema and is queried by name with no catalog prefix. A view can read the topic-backed tables described here; see `/redpanda:sql` for `CREATE VIEW` and `DROP VIEW`. --- ## Map a topic: `CREATE TABLE ... WITH (...)` ```sql CREATE TABLE [IF NOT EXISTS] catalog_name=>table_name WITH (option = 'value' [, ...]); ``` | Option | Default | Values / notes | |--------|---------|----------------| | `topic` | (required) | Redpanda topic to map | | `schema_subject` | `<topic>-value` | Schema Registry subject for the value schema | | `schema_lookup_policy` | `LATEST` | `LATEST` is the only supported value | | `error_handling_policy` | `FAIL` | `FAIL` (raise an error), `FILL_NULL` (failed fields become NULL; raw bytes kept in `redpanda_raw`), `DROP_RECORD` (skip the record) | | `struct_mapping_policy` | `COMPOUND` | `COMPOUND` (nested structures become typed fields, `(col).field`) or `JSON` (nested structures become JSON; required for recursive schemas) | | `output_schema_message_full_name` | first message in the schema | Fully qualified Protobuf message for the value | | `confluent_wire_protocol` | `'true'` | `'true'` / `'false'`: whether values carry the Schema Registry wire-format prefix. Only valid with `schema_lookup_policy = 'LATEST'` | | `key_decode_mode` | `binary` | `binary`, `string`, `schema_latest`, `schema_id_prefix`. Fixed for the table's lifetime | | `key_schema_subject` | `<topic>-key` | Subject for the key schema | | `key_schema_message_full_name` | first message in the schema | Fully qualified Protobuf message for the key | | `key_confluent_wire_protocol` | `'false'` | Only valid with `key_decode_mode = 'schema_latest'` | | `header_value_type` | `binary` | `binary` (`bytea`) or `string` (`text`). Fixed for the table's lifetime | Full option semantics, examples, and decoding behavior: [redpanda-catalogs.md](references/redpanda-catalogs.md). ### Auto-added columns Every mapped table gets two reserved struct columns (a topic schema cannot use these names): - `redpanda`: `partition` (int), `offset` (bigint), `timestamp` (timestamptz, nullable), `headers` (array of `{key text, value bytea}`), `key` (bytea by default), `timestamp_type` (int: `0` CreateTime, `1` LogAppendTime). - `redpanda_raw`: `key` and `value` bytea, populated only when `error_handling_policy = 'FILL_NULL'` and a record fails to decode. ### Change or remove a mapping ```sql ALTER TABLE default_redpanda_catalog=>orders WITH (error_handling_policy = 'FILL_NULL'); DROP TABLE IF EXISTS default_redpanda_catalog=>orders; -- the topic is not deleted ``` `ALTER TABLE` cannot change `key_decode_mode` or `header_value_type`; drop and recreate the table instead. ### After a schema change: `REFRESH` After any shape change to a topic's schema or its Iceberg table, run `REFRESH default_redpanda_catalog=>orders;` to update the schema view used for planning. Without it, a linked query fails with `Schema not found for Iceberg table '<table>'`. `REFRESH` updates only the schema view, not data. --- ## Inspect catalogs and tables ```sql SHOW CATALOGS; -- also: SHOW REDPANDA CATALOGS, SHOW ICEBERG CATALOGS SHOW REDPANDA TABLES default_redpanda_catalog; SHOW TABLES FROM default_redpanda_catalog; -- unqualified SHOW TABLES is an error DESCRIBE TABLE default_redpanda_catalog=>orders; -- columns, including decoded key type DESCRIBE REDPANDA CATALOG default_redpanda_catalog; SELECT name, topic_name, subject_name, error_handling_policy FROM system.kafka_sources WHERE connection_name = 'default_redpanda_catalog'; ``` `SHOW KAFKA CATALOGS` / `SHOW KAFKA TABLES` are synonyms for the `REDPANDA` forms. These statements and the catalog system tables only show objects in schemas where you have `USAGE`. Column reference for `system.catalogs`, `system.kafka_connections`, `system.kafka_sources`, `system.iceberg_catalogs`, and `system.iceberg_tables`: [files-and-system-tables.md](references/files-and-system-tables.md). --- ## Access A *SQL: Manage* user can read every topic and create catalogs and tables. A *SQL: Access* user can query a topic only after a *SQL: Manage* user grants it, for example `GRANT SELECT ON EXTERNAL SOURCE default_redpanda_catalog => 'orders' TO "alice@example.com";`. Creating a catalog or storage connection as a non-superuser needs `CREATE` on the schema. `GRANT` / `REVOKE` syntax: `/redpanda:sql`. Roles, the access model, and authentication: `/redpanda:sql-admin-api`. --- ## Producing the data (Iceberg Topics) The Iceberg history that a linked catalog reads is written by Redpanda's Iceberg Topics on the cluster. Redpanda SQL's Iceberg queries require `iceberg_catalog_type = rest` (the `object_storage` catalog type is not supported for Redpanda SQL queries), `iceberg_enabled = true`, and a topic `redpanda.iceberg.mode` with a registered schema. The topic's Iceberg mode also decides which `key_decode_mode` / `header_value_type` the SQL table must use. See [redpanda-iceberg-source-config.md](references/redpanda-iceberg-source-config.md). --- ## Reference Directory - [redpanda-catalogs.md](references/redpanda-catalogs.md): `CREATE` / `ALTER` / `DROP REDPANDA CATALOG` and their options, `CREATE` / `ALTER` / `DROP TABLE` with every option, value decoding, key and header decoding, the `redpanda` and `redpanda_raw` columns, nested fields with `COMPOUND` versus `JSON`, recursive schemas, and type notes. - [iceberg.md](references/iceberg.md): Querying Iceberg-enabled topics through a linked Redpanda catalog: what Redpanda Cloud configures, `REFRESH`, schema differences between topic and Iceberg table, key and header mode matching, Iceberg type limitations, and the `CREATE` / `ALTER` / `DROP ICEBERG CATALOG` and `CREATE` / `ALTER` / `DROP STORAGE` syntax and options. - [files-and-system-tables.md](references/files-and-system-tables.md): The catalog-metadata system tables (`system.catalogs`, `system.kafka_connections`, `system.kafka_sources`, `system.iceberg_catalogs`, `system.iceberg_tables`), `SHOW` / `DESCRIBE` forms, and exporting query results with `COPY TO`. - [redpanda-iceberg-source-config.md](references/redpanda-iceberg-source-config.md): The Iceberg Topics cluster and topic properties a BYOC user sets so Redpanda SQL can query Iceberg history, REST catalog connection and secrets, Iceberg modes and key/value/header translation, and Server-Side Schema ID Validation.
GitHub에서 보기