Files
supabase/apps/docs/content/guides/storage/analytics/query-with-postgres.mdx
T
Riccardo Busetti 1a3ba9f15a ref(etl): Rename ETL Replication to Replication and update docs (#40769)
* ref(etl): Rename ETL Replication to Replication and update docs

* Fix

* Fix

* Fix

* Fix

* Fix
2025-11-25 20:45:50 +08:00

75 lines
2.1 KiB
Plaintext

---
title: 'Query with PostgreSQL'
subtitle: 'Query analytics bucket data directly from PostgreSQL using SQL.'
---
Once your data flows into an analytics bucket—either via the [Replication Pipeline](/docs/guides/storage/analytics/replication) or custom pipelines—you can query it directly from Postgres using standard SQL.
This is made possible by the [Iceberg Foreign Data Wrapper](/docs/guides/database/extensions/wrappers/iceberg), which creates a bridge between your Postgres database and Iceberg tables.
## Setup overview
You have two options to enable querying:
1. **Dashboard UI** (recommended) - Streamlined setup through the Supabase Dashboard
2. **Manual installation** - Install the wrapper using SQL and configuration
## Installing via Dashboard UI
The dashboard provides the easiest setup experience:
1. Navigate to your **Analytics Bucket** page in the Supabase Dashboard.
2. Locate the namespace you want to query and click **Query with Postgres**.
<Image
alt="Query with PostgreSQL button on analytics bucket page"
src="/docs/img/storage/query-analytics-with-postgres.png"
/>
3. Enter the **Postgres schema** where you want to create the foreign tables.
<Image
alt="Select destination PostgreSQL schema"
src="/docs/img/storage/query-analytics-schema-name.png"
/>
4. Click **Connect**. The wrapper is now configured.
## Querying your data
Once the foreign data wrapper is installed, you can query your Iceberg tables using standard SQL:
```sql
select *
from schema_name.table_name
limit 100;
```
### Common query examples
Get the latest events:
```sql
select event_id, event_name, event_timestamp
from analytics.events
order by event_timestamp desc
limit 1000;
```
Join with transactional data:
```sql
SELECT
e.event_id,
e.event_name,
u.user_email
FROM analytics.events e
JOIN public.users u ON e.user_id = u.id
WHERE e.event_timestamp > NOW() - INTERVAL '7 days'
LIMIT 100;
```
## Manual installation
For advanced use cases, you can manually install and configure the Iceberg Foreign Data Wrapper. See the [Iceberg Foreign Data Wrapper documentation](/docs/guides/database/extensions/wrappers/iceberg) for detailed instructions.