--- 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**. Query with PostgreSQL button on analytics bucket page 3. Enter the **Postgres schema** where you want to create the foreign tables. Select destination PostgreSQL schema 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.