-
Notifications
You must be signed in to change notification settings - Fork 4
SQL: Query topics #574
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
kbatuigas
wants to merge
10
commits into
rp-sql
Choose a base branch
from
DOC-1990-document-feature-query-redpanda-topics
base: rp-sql
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+109
−94
Open
SQL: Query topics #574
Changes from all commits
Commits
Show all changes
10 commits
Select commit
Hold shift + click to select a range
0ec00c7
Start query RP topics doc
kbatuigas ffbbef2
DOC-1990: Move query directory and rewrite streaming-topics how-to
kbatuigas 0a9607f
redpanda-catalogs work done in DOC-2049
kbatuigas 0af6dff
Change rp connection to catalog
kbatuigas 088add2
Revert "redpanda-catalogs work done in DOC-2049"
kbatuigas add05b2
Stub file
kbatuigas 48ead8c
Add wire protocol option
kbatuigas d10e759
schema_subject required
kbatuigas 9ab9499
Review pass
kbatuigas 177b97c
Review pass
kbatuigas File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,3 @@ | ||
| = Query data | ||
| :description: Query live and historical data in your Redpanda topics using standard PostgreSQL syntax. | ||
| :page-layout: index |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,80 @@ | ||
| = Query Streaming Topics | ||
| :description: Map a Redpanda topic to a SQL table and run analytical queries directly against live streaming data. | ||
| :page-topic-type: how-to | ||
| :personas: app_developer, data_engineer | ||
| :learning-objective-1: Map a Redpanda topic to a SQL table using the default Redpanda catalog | ||
| :learning-objective-2: Run analytical SQL queries against live topic data | ||
|
|
||
| Map a Redpanda topic to a SQL table to run analytical queries directly against live streaming data without building ETL pipelines. Redpanda SQL reads each record's fields from the topic's registered schema. | ||
|
|
||
| To extend queries past your Redpanda retention window by reading the Iceberg history of Iceberg-enabled topics, see xref:sql:query-data/query-iceberg-topics.adoc[Query Iceberg-enabled Topics]. | ||
|
|
||
| Use this page to: | ||
|
|
||
| * [ ] {learning-objective-1} | ||
| * [ ] {learning-objective-2} | ||
|
|
||
| == Prerequisites | ||
|
|
||
| Before you query a topic with SQL: | ||
|
|
||
| * Enable the Redpanda SQL engine on your Redpanda Bring Your Own Cloud (BYOC) cluster. See xref:sql:get-started/deploy-sql-cluster.adoc[Enable Redpanda SQL]. | ||
| * Have a Redpanda Cloud user with the *SQL: Access* (or *SQL: Manage*) data-plane RBAC permission. For a *SQL: Access* user to query a topic, a *SQL: Manage* user must first `GRANT SELECT` on the topic to that user. See xref:sql:manage/manage-access.adoc[Manage access to Redpanda SQL]. | ||
| * Connect to Redpanda SQL with `psql` or another PostgreSQL client. See xref:sql:get-started/sql-quickstart.adoc[] for a `psql` example, or xref:sql:connect-to-sql/index.adoc[Connect to Redpanda SQL]. | ||
| * Confirm that the Redpanda topic you want to query has a schema registered in Schema Registry. Redpanda SQL supports Protobuf, JSON, and Avro schemas. | ||
|
|
||
| == Map the topic to a SQL table | ||
|
|
||
| Each Redpanda topic appears as a SQL table inside a Redpanda catalog. When Redpanda SQL is enabled, a catalog named `default_redpanda_catalog` is created automatically and points at your cluster. | ||
|
|
||
| Define a table against the topic with `CREATE TABLE`: | ||
|
|
||
| [source,sql] | ||
| ---- | ||
| CREATE TABLE default_redpanda_catalog=>orders WITH ( | ||
| topic = 'orders', | ||
| schema_subject = 'orders-value' | ||
| ); | ||
| ---- | ||
|
|
||
| Replace `orders` with your topic name and `orders-value` with the Schema Registry subject that holds the topic's value schema. `schema_subject` is required: Redpanda SQL needs a schema to deserialize and query the topic's records. | ||
|
|
||
| If the topic uses a Protobuf schema that defines more than one message, also set `output_schema_message_full_name` to the fully-qualified name of the message to use: | ||
|
|
||
| [source,sql] | ||
| ---- | ||
| CREATE TABLE default_redpanda_catalog=>orders WITH ( | ||
| topic = 'orders', | ||
| schema_subject = 'orders-value', | ||
| output_schema_message_full_name = 'com.example.orders.Order' | ||
| ); | ||
| ---- | ||
|
|
||
| The table inherits its column definitions from the registered schema. Each top-level field in the schema becomes a SQL column. For querying nested fields in struct types, see xref:sql:query-data/query-nested-fields.adoc[]. | ||
|
|
||
| == Run queries | ||
|
|
||
| Query the table with standard `SELECT` syntax. The following query returns the first 10 records: | ||
|
|
||
| [source,sql] | ||
| ---- | ||
| SELECT * FROM default_redpanda_catalog=>orders LIMIT 10; | ||
| ---- | ||
|
|
||
| Aggregate and filter records using familiar PostgreSQL constructs: | ||
|
|
||
| [source,sql] | ||
| ---- | ||
| 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; | ||
| ---- | ||
|
|
||
| == Next steps | ||
|
|
||
| * xref:sql:query-data/query-iceberg-topics.adoc[Query Iceberg-enabled Topics]: run queries against historical data retained beyond your Redpanda retention window. | ||
| * xref:reference:sql/sql-statements/create-table.adoc[CREATE TABLE]: full reference for the table-against-topic syntax, including all options. | ||
| * xref:reference:sql/index.adoc[Redpanda SQL Reference]: supported SQL statements, clauses, data types, and functions. | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,81 +1,2 @@ | ||
| = Redpanda Catalogs | ||
| :description: Redpanda catalogs are named connections that map Redpanda topics to queryable SQL tables. | ||
| :page-topic-type: reference | ||
|
|
||
| Redpanda catalogs are named connections that let you query Redpanda topics using standard SQL. The catalog model consists of three core concepts: | ||
|
|
||
| * Catalogs: Named connections to a Redpanda cluster, created with xref:reference:sql/sql-statements/create-redpanda-catalog.adoc[CREATE REDPANDA CATALOG]. | ||
| * Tables: Redpanda topics mapped as queryable SQL tables using the `catalog_name\=>table_name` syntax, created with xref:reference:sql/sql-statements/create-table.adoc[CREATE TABLE]. | ||
| * Storage connections: Named connections to external object storage such as Amazon S3, created with xref:reference:sql/sql-statements/create-storage.adoc[CREATE STORAGE]. | ||
|
|
||
| NOTE: Redpanda SQL operates in read-only mode. Data mutation operations such as `INSERT`, `UPDATE`, and `DELETE` are not available. Data is ingested into Redpanda topics and made queryable through catalog mappings. | ||
|
|
||
| == Typical workflow | ||
|
|
||
| To query Redpanda topic data with SQL: | ||
|
|
||
| . Create a catalog connection: | ||
| + | ||
| [source,sql] | ||
| ---- | ||
| CREATE REDPANDA CATALOG production_redpanda | ||
| WITH ( | ||
| initial_brokers = 'broker1:9092', | ||
| schema_registry_url = 'http://schema-registry:8081' | ||
| ); | ||
| ---- | ||
|
|
||
| . Map a topic as a table: | ||
| + | ||
| [source,sql] | ||
| ---- | ||
| CREATE TABLE production_redpanda=>user_events | ||
| WITH (topic = 'user-events'); | ||
| ---- | ||
|
|
||
| . Query the data: | ||
| + | ||
| [source,sql] | ||
| ---- | ||
| SELECT * FROM production_redpanda=>user_events LIMIT 10; | ||
| ---- | ||
|
|
||
| == Related statements | ||
|
|
||
| [cols="<40%,<60%",options="header"] | ||
| |=== | ||
| |Statement |Description | ||
|
|
||
| |xref:reference:sql/sql-statements/create-redpanda-catalog.adoc[CREATE REDPANDA CATALOG] | ||
| |Create a catalog connection to a Redpanda cluster. | ||
|
|
||
| |xref:reference:sql/sql-statements/alter-redpanda-catalog.adoc[ALTER REDPANDA CATALOG] | ||
| |Modify connection properties of an existing catalog. | ||
|
|
||
| |xref:reference:sql/sql-statements/create-table.adoc[CREATE TABLE] | ||
| |Map a Redpanda topic to a SQL table through a catalog. | ||
|
|
||
| |xref:reference:sql/sql-statements/alter-table.adoc[ALTER TABLE] | ||
| |Modify options of an existing catalog table. | ||
|
|
||
| |xref:reference:sql/sql-statements/drop-table.adoc[DROP TABLE] | ||
| |Remove a catalog table mapping. | ||
|
|
||
| |xref:reference:sql/sql-statements/drop-redpanda-catalog.adoc[DROP REDPANDA CATALOG] | ||
| |Remove a Redpanda catalog connection. | ||
|
|
||
| |xref:reference:sql/sql-statements/drop-storage.adoc[DROP STORAGE] | ||
| |Remove a named storage definition. | ||
|
|
||
| |xref:reference:sql/sql-statements/show-tables.adoc[SHOW TABLES] | ||
| |List tables within a catalog. | ||
|
|
||
| |xref:reference:sql/sql-statements/describe.adoc[DESCRIBE] | ||
| |Show details about a catalog or catalog table. | ||
|
|
||
| |xref:reference:sql/sql-statements/create-storage.adoc[CREATE STORAGE] | ||
| |Create a connection to external object storage. | ||
|
|
||
| |xref:reference:sql/sql-statements/alter-storage.adoc[ALTER STORAGE] | ||
| |Modify an existing storage connection. | ||
| |=== | ||
| // stub |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Exactly @kbatuigas ! :)