mirror of
https://github.com/supabase/supabase.git
synced 2026-10-05 01:15:03 +03:00
ref(docs): Make ClickHouse, Snowflake and DuckLake in public alpha (#51195)
This commit is contained in:
1 parent
edb8a2dc31
commit
4ab54b9359
14 files changed
+55
-283
No files matched your search
@@ -34,14 +34,12 @@ See [Set up manual replication](/docs/guides/database/replication/manual-replica
|
||||
|
||||
## Supported destinations
|
||||
|
||||
| Destination | Status |
|
||||
| -------------------------------------------------------------------- | ------------- |
|
||||
| [BigQuery](/docs/guides/database/replication/pipelines/bigquery) | Public alpha |
|
||||
| [ClickHouse](/docs/guides/database/replication/pipelines/clickhouse) | Private alpha |
|
||||
| [DuckLake](/docs/guides/database/replication/pipelines/ducklake) | Private alpha |
|
||||
| [Snowflake](/docs/guides/database/replication/pipelines/snowflake) | Private alpha |
|
||||
|
||||
[Request access](/go/supabase-pipelines-new-destinations) to destinations in private alpha.
|
||||
| Destination | Status |
|
||||
| -------------------------------------------------------------------- | ------------ |
|
||||
| [BigQuery](/docs/guides/database/replication/pipelines/bigquery) | Public alpha |
|
||||
| [ClickHouse](/docs/guides/database/replication/pipelines/clickhouse) | Public alpha |
|
||||
| [DuckLake](/docs/guides/database/replication/pipelines/ducklake) | Public alpha |
|
||||
| [Snowflake](/docs/guides/database/replication/pipelines/snowflake) | Public alpha |
|
||||
|
||||
## Use cases
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ Pipelines requires a Pro, Team, or Enterprise plan. During public alpha, availab
|
||||
|
||||
## What destinations are supported?
|
||||
|
||||
BigQuery is in public alpha. ClickHouse, DuckLake, and Snowflake are in private alpha and require access approval. See [supported destinations](/docs/guides/database/replication#supported-destinations) for their status and access request.
|
||||
BigQuery, ClickHouse, DuckLake, and Snowflake are in public alpha. For setup guides, see [supported destinations](/docs/guides/database/replication#supported-destinations).
|
||||
|
||||
## Does the destination's region affect performance?
|
||||
|
||||
|
||||
@@ -8,8 +8,6 @@ sidebar_label: 'ClickHouse'
|
||||
|
||||
<$Partial path="pipelines-public-alpha.mdx" />
|
||||
|
||||
The ClickHouse destination is in private alpha and available only to approved organizations. [Request access](/go/supabase-pipelines-new-destinations) before following this guide.
|
||||
|
||||
[ClickHouse](https://clickhouse.com/) is a database for analytics. Supabase Pipelines replicates Postgres tables to ClickHouse as either current-state tables or an append-only history of changes.
|
||||
|
||||
To replicate data to ClickHouse:
|
||||
|
||||
@@ -8,8 +8,6 @@ sidebar_label: 'DuckLake'
|
||||
|
||||
<$Partial path="pipelines-public-alpha.mdx" />
|
||||
|
||||
The DuckLake destination is in private alpha and available only to approved organizations. [Request access](/go/supabase-pipelines-new-destinations) before following this guide.
|
||||
|
||||
Replicate Postgres tables to [DuckLake](https://ducklake.select/) for current-state lakehouse queries. [Prepare resources](#understand-the-ducklake-components), [configure the destination](#choose-a-configuration-mode), then [query replicated data](#query-the-destination).
|
||||
|
||||
## Source table requirements
|
||||
@@ -102,7 +100,7 @@ select *
|
||||
from my_ducklake.public.orders;
|
||||
```
|
||||
|
||||
See the [DuckDB connection guide](https://ducklake.select/docs/stable/duckdb/usage/connecting) for the current `ducklake` extension and `ATTACH` syntax. If your query client can't read a Supabase-backed catalog during private alpha, [contact support](/dashboard/support/new).
|
||||
See the [DuckDB connection guide](https://ducklake.select/docs/stable/duckdb/usage/connecting) for the current `ducklake` extension and `ATTACH` syntax. If your query client can't read a Supabase-backed catalog during public alpha, [contact support](/dashboard/support/new).
|
||||
|
||||
## Replica identity
|
||||
|
||||
|
||||
@@ -8,8 +8,6 @@ sidebar_label: 'Snowflake'
|
||||
|
||||
<$Partial path="pipelines-public-alpha.mdx" />
|
||||
|
||||
The Snowflake destination is in private alpha and available only to approved organizations. [Request access](/go/supabase-pipelines-new-destinations) before following this guide.
|
||||
|
||||
[Snowflake](https://www.snowflake.com/) is a managed data platform. Supabase Pipelines replicates each Postgres table to Snowflake as an append-only history of changes.
|
||||
|
||||
To replicate data to Snowflake:
|
||||
|
||||
+28
-45
@@ -1,4 +1,4 @@
|
||||
import { fireEvent, screen } from '@testing-library/react'
|
||||
import { fireEvent, screen, within } from '@testing-library/react'
|
||||
import { platformComponents as components } from 'api-types'
|
||||
import { mockAnimationsApi } from 'jsdom-testing-mocks'
|
||||
import { HttpResponse } from 'msw'
|
||||
@@ -52,16 +52,15 @@ const addBackgroundMocks = () => {
|
||||
describe('DestinationTypeSelection', () => {
|
||||
beforeEach(() => {
|
||||
window.localStorage.clear()
|
||||
})
|
||||
|
||||
test('shows placeholder when no type is selected', async () => {
|
||||
mockBigQueryEnabled.mockReturnValue(false)
|
||||
mockIcebergEnabled.mockReturnValue(false)
|
||||
mockDucklakeEnabled.mockReturnValue(false)
|
||||
mockSnowflakeEnabled.mockReturnValue(false)
|
||||
mockClickHouseEnabled.mockReturnValue(false)
|
||||
addBackgroundMocks()
|
||||
})
|
||||
|
||||
test('shows placeholder when no type is selected', async () => {
|
||||
customRender(<DestinationTypeSelection />)
|
||||
|
||||
expect(await screen.findByText('Select a destination type')).toBeInTheDocument()
|
||||
@@ -71,69 +70,53 @@ describe('DestinationTypeSelection', () => {
|
||||
mockBigQueryEnabled.mockReturnValue(true)
|
||||
mockIcebergEnabled.mockReturnValue(true)
|
||||
mockDucklakeEnabled.mockReturnValue(true)
|
||||
mockSnowflakeEnabled.mockReturnValue(false)
|
||||
mockClickHouseEnabled.mockReturnValue(false)
|
||||
addBackgroundMocks()
|
||||
mockSnowflakeEnabled.mockReturnValue(true)
|
||||
mockClickHouseEnabled.mockReturnValue(true)
|
||||
|
||||
customRender(<DestinationTypeSelection />)
|
||||
|
||||
fireEvent.click(await screen.findByRole('combobox'))
|
||||
|
||||
expect(await screen.findByText('Public Alpha')).toBeInTheDocument()
|
||||
expect(screen.getByText('Early Access')).toBeInTheDocument()
|
||||
const publicAlphaGroup = await screen.findByRole('group', { name: 'Public Alpha' })
|
||||
expect(screen.queryByText('Early Access')).not.toBeInTheDocument()
|
||||
expect(screen.getByText('Deprecated')).toBeInTheDocument()
|
||||
expect(screen.getByText('BigQuery')).toBeInTheDocument()
|
||||
expect(screen.getByText('DuckLake')).toBeInTheDocument()
|
||||
for (const destination of ['BigQuery', 'ClickHouse', 'DuckLake', 'Snowflake']) {
|
||||
expect(within(publicAlphaGroup).getByText(destination)).toBeInTheDocument()
|
||||
}
|
||||
expect(screen.getByText('Analytics Bucket')).toBeInTheDocument()
|
||||
expect(screen.queryByText('Pipelines')).not.toBeInTheDocument()
|
||||
})
|
||||
|
||||
test('hides destinations behind disabled feature flags', async () => {
|
||||
mockBigQueryEnabled.mockReturnValue(false)
|
||||
mockIcebergEnabled.mockReturnValue(false)
|
||||
mockDucklakeEnabled.mockReturnValue(false)
|
||||
mockSnowflakeEnabled.mockReturnValue(false)
|
||||
mockClickHouseEnabled.mockReturnValue(false)
|
||||
addBackgroundMocks()
|
||||
|
||||
customRender(<DestinationTypeSelection />)
|
||||
|
||||
fireEvent.click(await screen.findByRole('combobox'))
|
||||
|
||||
expect(screen.queryByText('Read Replica')).not.toBeInTheDocument()
|
||||
expect(screen.queryByText('BigQuery')).not.toBeInTheDocument()
|
||||
expect(screen.queryByText('DuckLake')).not.toBeInTheDocument()
|
||||
expect(screen.queryByText('Analytics Bucket')).not.toBeInTheDocument()
|
||||
expect(screen.queryByText('Pipelines')).not.toBeInTheDocument()
|
||||
expect(screen.queryAllByRole('option')).toHaveLength(0)
|
||||
})
|
||||
|
||||
test('shows the public alpha warning for a Pipelines destination', async () => {
|
||||
mockBigQueryEnabled.mockReturnValue(true)
|
||||
mockIcebergEnabled.mockReturnValue(false)
|
||||
mockDucklakeEnabled.mockReturnValue(false)
|
||||
mockSnowflakeEnabled.mockReturnValue(false)
|
||||
mockClickHouseEnabled.mockReturnValue(false)
|
||||
addBackgroundMocks()
|
||||
test.each(['BigQuery', 'ClickHouse', 'DuckLake', 'Snowflake'])(
|
||||
'shows the public alpha warning for %s',
|
||||
async (destination) => {
|
||||
mockBigQueryEnabled.mockReturnValue(true)
|
||||
mockDucklakeEnabled.mockReturnValue(true)
|
||||
mockSnowflakeEnabled.mockReturnValue(true)
|
||||
mockClickHouseEnabled.mockReturnValue(true)
|
||||
|
||||
customRender(<DestinationTypeSelection />)
|
||||
customRender(<DestinationTypeSelection />)
|
||||
|
||||
fireEvent.click(await screen.findByRole('combobox'))
|
||||
fireEvent.click(await screen.findByText('BigQuery'))
|
||||
fireEvent.click(await screen.findByRole('combobox'))
|
||||
fireEvent.click(await screen.findByText(destination))
|
||||
|
||||
expect(
|
||||
await screen.findByText(
|
||||
'Destination type cannot be changed after creation. BigQuery support is in public alpha.'
|
||||
)
|
||||
).toBeInTheDocument()
|
||||
})
|
||||
expect(
|
||||
await screen.findByText(
|
||||
`Destination type cannot be changed after creation. ${destination} support is in public alpha.`
|
||||
)
|
||||
).toBeInTheDocument()
|
||||
}
|
||||
)
|
||||
|
||||
test('disables the selector in edit mode so the destination type cannot be changed', async () => {
|
||||
mockBigQueryEnabled.mockReturnValue(true)
|
||||
mockIcebergEnabled.mockReturnValue(false)
|
||||
mockDucklakeEnabled.mockReturnValue(false)
|
||||
mockSnowflakeEnabled.mockReturnValue(false)
|
||||
mockClickHouseEnabled.mockReturnValue(false)
|
||||
addBackgroundMocks()
|
||||
// Edit mode triggers useDestinationInformation({ id: 1 }) which fires destination-by-id
|
||||
addAPIMock({
|
||||
method: 'get',
|
||||
|
||||
+4
-10
@@ -25,7 +25,7 @@ interface DestinationTypeOption {
|
||||
value: DestinationType
|
||||
label: string
|
||||
description: string
|
||||
stage: 'Public Alpha' | 'Early Access' | 'Deprecated' | null
|
||||
stage: 'Public Alpha' | 'Deprecated' | null
|
||||
enabled: boolean
|
||||
}
|
||||
|
||||
@@ -78,30 +78,25 @@ export const DestinationTypeSelection = () => {
|
||||
stage: 'Public Alpha',
|
||||
enabled: isOptionVisible('BigQuery', etlEnableBigQuery),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
label: 'Early Access',
|
||||
options: [
|
||||
{
|
||||
value: 'DuckLake',
|
||||
label: 'DuckLake',
|
||||
description: 'Replicate changes to DuckLake for open lakehouse storage',
|
||||
stage: 'Early Access',
|
||||
stage: 'Public Alpha',
|
||||
enabled: isOptionVisible('DuckLake', etlEnableDucklake),
|
||||
},
|
||||
{
|
||||
value: 'Snowflake',
|
||||
label: 'Snowflake',
|
||||
description: 'Replicate changes to Snowflake for cloud data warehousing',
|
||||
stage: 'Early Access',
|
||||
stage: 'Public Alpha',
|
||||
enabled: isOptionVisible('Snowflake', etlEnableSnowflake),
|
||||
},
|
||||
{
|
||||
value: 'ClickHouse',
|
||||
label: 'ClickHouse',
|
||||
description: 'Replicate changes to ClickHouse for real-time analytics',
|
||||
stage: 'Early Access',
|
||||
stage: 'Public Alpha',
|
||||
enabled: isOptionVisible('ClickHouse', etlEnableClickHouse),
|
||||
},
|
||||
],
|
||||
@@ -132,7 +127,6 @@ export const DestinationTypeSelection = () => {
|
||||
(type: DestinationType) => string
|
||||
> = {
|
||||
'Public Alpha': (type) => `${type} support is in public alpha.`,
|
||||
'Early Access': (type) => `${type} support is in early access.`,
|
||||
Deprecated: (type) => `${type} is deprecated.`,
|
||||
}
|
||||
|
||||
|
||||
@@ -11,6 +11,8 @@ date: '2025-12-02T11:00'
|
||||
toc_depth: 2
|
||||
---
|
||||
|
||||
> **Update: October 2, 2026.** BigQuery, ClickHouse, DuckLake, and Snowflake are now available in public alpha. The destination early-access form has been retired. To get started, see the [destination guides](/docs/guides/database/replication#supported-destinations). The original announcement follows.
|
||||
|
||||
Today we're introducing **Supabase Pipelines**: managed change-data-capture pipelines that replicate your Postgres tables to analytical destinations in near real time.
|
||||
|
||||
Pipelines reads changes from your Postgres database and writes them to supported destination systems. It uses logical replication to capture inserts, updates, deletes, and truncates as they happen. **Setup takes minutes in the Supabase Dashboard.**
|
||||
|
||||
@@ -14,6 +14,8 @@ date: '2026-07-21'
|
||||
toc_depth: 2
|
||||
---
|
||||
|
||||
> **Update: October 2, 2026.** BigQuery, ClickHouse, DuckLake, and Snowflake are now available in public alpha. The destination early-access form has been retired. To get started, see the [destination guides](/docs/guides/database/replication#supported-destinations). The original announcement follows.
|
||||
|
||||
Today we're moving **Supabase Pipelines** into public alpha. The biggest addition is schema change support: Pipelines can now detect supported schema changes in your source tables and apply them to the destination automatically. This release also brings a faster initial sync and a new destination request form for ClickHouse, Snowflake, and DuckLake.
|
||||
|
||||
Supabase Pipelines replicates your Supabase Postgres data to external analytical systems in near real time. It is powered by [Supabase ETL](https://github.com/supabase/etl), our open source change-data-capture pipeline written in Rust. Supabase ETL reads changes from Postgres through logical replication, copies existing table data, streams inserts, updates, deletes, and truncates, and writes them to your destination.
|
||||
|
||||
@@ -38,8 +38,6 @@ import contestRules from './legal/contest-rules'
|
||||
import byocEarlyAccess from './pre-release/byoc-early-access'
|
||||
import multigresEarlyAccess from './pre-release/multigres-early-access'
|
||||
import multigresEarlyAccessThankYou from './pre-release/multigres-early-access-thank-you'
|
||||
import supabasePipelinesNewDestinations from './pre-release/supabase-pipelines-new-destinations'
|
||||
import supabasePipelinesNewDestinationsThankYou from './pre-release/supabase-pipelines-new-destinations-thank-you'
|
||||
import supabaseStripeProjects from './stripe-projects/supabase-stripe-projects'
|
||||
|
||||
const pages: GoPageInput[] = [
|
||||
@@ -47,8 +45,6 @@ const pages: GoPageInput[] = [
|
||||
awsActivateOffer, // maintain forever
|
||||
exampleLeadGen, // sample lead gen page
|
||||
byocEarlyAccess, // maintain until PM says to remove
|
||||
supabasePipelinesNewDestinations, // maintain while Pipelines destination early access is active
|
||||
supabasePipelinesNewDestinationsThankYou, // maintain while Pipelines destination early access is active
|
||||
multigresEarlyAccess, // maintain while the Multigres private alpha is active
|
||||
multigresEarlyAccessThankYou, // maintain while the Multigres private alpha is active
|
||||
amoe, // maintain forever
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
import type { GoPageInput } from 'marketing'
|
||||
|
||||
const page: GoPageInput = {
|
||||
template: 'thank-you',
|
||||
slug: 'supabase-pipelines-new-destinations/thank-you',
|
||||
metadata: {
|
||||
title: 'Supabase Pipelines destination request received',
|
||||
description: 'Thanks for requesting early access to upcoming Supabase Pipelines destinations.',
|
||||
ogImage: '/images/blog/2025-12-02-introducing-supabase-pipelines/og.png',
|
||||
},
|
||||
hero: {
|
||||
title: 'Thanks for your request',
|
||||
subtitle: 'Early Access',
|
||||
description:
|
||||
"We received your destination preferences for Supabase Pipelines. If your workspace is selected for early access to ClickHouse, Snowflake, or DuckLake destinations, we'll reach out with next steps.",
|
||||
ctas: [
|
||||
{
|
||||
label: 'Back to Supabase',
|
||||
href: '/',
|
||||
variant: 'secondary',
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
|
||||
export default page
|
||||
@@ -1,181 +0,0 @@
|
||||
import type { GoPageInput } from 'marketing'
|
||||
|
||||
const page: GoPageInput = {
|
||||
template: 'lead-gen',
|
||||
slug: 'supabase-pipelines-new-destinations',
|
||||
metadata: {
|
||||
title: 'Supabase Pipelines Destinations - Early Access',
|
||||
description:
|
||||
'Request early access to upcoming Supabase Pipelines destinations for ClickHouse, Snowflake, and DuckLake.',
|
||||
ogImage: '/images/blog/2025-12-02-introducing-supabase-pipelines/og.png',
|
||||
},
|
||||
hero: {
|
||||
title: 'Supabase Pipelines destinations',
|
||||
subtitle: 'Early Access',
|
||||
description:
|
||||
"Managed change-data-capture pipelines that replicate your Supabase Postgres data to analytical systems in near real time. Request early access to the destinations we're adding next: ClickHouse, Snowflake, and DuckLake.",
|
||||
image: {
|
||||
src: '/images/blog/2025-12-02-introducing-supabase-pipelines/thumb.png',
|
||||
alt: 'Introducing Supabase Pipelines',
|
||||
width: 2400,
|
||||
height: 1260,
|
||||
},
|
||||
ctas: [
|
||||
{
|
||||
label: 'Request early access',
|
||||
href: '#form',
|
||||
variant: 'primary',
|
||||
},
|
||||
{
|
||||
label: 'Read the announcement',
|
||||
href: '/blog/introducing-supabase-pipelines',
|
||||
variant: 'secondary',
|
||||
},
|
||||
],
|
||||
},
|
||||
sections: [
|
||||
{
|
||||
type: 'feature-grid',
|
||||
className: 'border-y border-muted bg-surface-75 py-16 sm:py-24',
|
||||
title: 'Bring Supabase Postgres into your analytics stack',
|
||||
description:
|
||||
'Pipelines keeps your application workload on Postgres while ongoing replication sends production changes to systems built for analytics, reporting, and lakehouse workflows.',
|
||||
columns: 3,
|
||||
items: [
|
||||
{
|
||||
title: 'ClickHouse',
|
||||
description:
|
||||
'Replicate operational data into ClickHouse for high-volume analytical queries, dashboards, and event workloads.',
|
||||
},
|
||||
{
|
||||
title: 'Snowflake',
|
||||
description:
|
||||
'Replicate Supabase Postgres data into Snowflake for warehouse analytics, BI, and governed data workflows.',
|
||||
},
|
||||
{
|
||||
title: 'DuckLake',
|
||||
description:
|
||||
'Move data into an open lakehouse destination for portable analytics and long-term data workflows.',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
type: 'form',
|
||||
id: 'form',
|
||||
className: 'py-4 sm:py-8',
|
||||
title: 'Request early access to new Pipelines destinations',
|
||||
description:
|
||||
"This form is for early access to upcoming destinations for Supabase Pipelines, not access to Supabase Pipelines itself. Tell us which destinations your team wants to use. If your workspace is selected, we'll reach out with next steps.",
|
||||
fields: [
|
||||
{
|
||||
type: 'email',
|
||||
name: 'email',
|
||||
label: 'Email address',
|
||||
placeholder: 'Work email',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 'text',
|
||||
name: 'org_slug',
|
||||
label: 'Supabase organization slug',
|
||||
placeholder: 'acme-inc',
|
||||
description: 'Use the slug from your Supabase Dashboard URL, for example /org/acme-inc.',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
type: 'checkbox',
|
||||
name: 'destination_clickhouse',
|
||||
label: 'ClickHouse',
|
||||
description:
|
||||
'For high-throughput analytical queries, event data, logs, and dashboard workloads.',
|
||||
group: 'requested_destinations',
|
||||
groupRequired: true,
|
||||
},
|
||||
{
|
||||
type: 'checkbox',
|
||||
name: 'destination_snowflake',
|
||||
label: 'Snowflake',
|
||||
description: 'For teams running warehouse analytics, BI, or governed data workflows.',
|
||||
group: 'requested_destinations',
|
||||
groupRequired: true,
|
||||
},
|
||||
{
|
||||
type: 'checkbox',
|
||||
name: 'destination_ducklake',
|
||||
label: 'DuckLake',
|
||||
description:
|
||||
'For open lakehouse workflows where you want portable data and flexible analytics.',
|
||||
group: 'requested_destinations',
|
||||
groupRequired: true,
|
||||
},
|
||||
],
|
||||
submitLabel: 'Request destination access',
|
||||
successRedirect: '/go/supabase-pipelines-new-destinations/thank-you',
|
||||
disclaimer:
|
||||
'By submitting this form, I confirm that I have read and understood the [Privacy Policy](https://supabase.com/privacy).',
|
||||
crm: {
|
||||
notion: {
|
||||
database_id: '3825004b775f80828179e7bdd7ee4b8d',
|
||||
columnMap: {
|
||||
email: 'Email',
|
||||
org_slug: 'Organization Slug',
|
||||
destination_clickhouse: 'ClickHouse',
|
||||
destination_snowflake: 'Snowflake',
|
||||
destination_ducklake: 'DuckLake',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
type: 'three-column',
|
||||
className: 'pb-16 sm:pb-24',
|
||||
title: 'Suggested reading',
|
||||
description: 'Get the product context and setup details behind Supabase Pipelines.',
|
||||
children: (
|
||||
<>
|
||||
<a
|
||||
href="/blog/introducing-supabase-pipelines"
|
||||
className="group flex h-full flex-col gap-3 rounded-lg border border-muted bg-surface-100 p-5 text-left transition-colors hover:border-brand-600 hover:bg-surface-200"
|
||||
>
|
||||
<span className="text-sm text-foreground-lighter">Blog</span>
|
||||
<span className="text-lg font-medium text-foreground group-hover:text-primary">
|
||||
Introducing Supabase Pipelines
|
||||
</span>
|
||||
<span className="text-sm leading-relaxed text-foreground-light">
|
||||
Learn how managed CDC pipelines move Postgres changes to analytical destinations in
|
||||
near real time.
|
||||
</span>
|
||||
</a>
|
||||
<a
|
||||
href="/docs/guides/database/replication/pipelines"
|
||||
className="group flex h-full flex-col gap-3 rounded-lg border border-muted bg-surface-100 p-5 text-left transition-colors hover:border-brand-600 hover:bg-surface-200"
|
||||
>
|
||||
<span className="text-sm text-foreground-lighter">Docs</span>
|
||||
<span className="text-lg font-medium text-foreground group-hover:text-primary">
|
||||
Set up Pipelines
|
||||
</span>
|
||||
<span className="text-sm leading-relaxed text-foreground-light">
|
||||
Review publications, destination setup, monitoring, and how pipelines are managed from
|
||||
the Dashboard.
|
||||
</span>
|
||||
</a>
|
||||
<a
|
||||
href="/blog/realtime-or-pipelines-how-to-choose-the-right-tool"
|
||||
className="group flex h-full flex-col gap-3 rounded-lg border border-muted bg-surface-100 p-5 text-left transition-colors hover:border-brand-600 hover:bg-surface-200"
|
||||
>
|
||||
<span className="text-sm text-foreground-lighter">Guide</span>
|
||||
<span className="text-lg font-medium text-foreground group-hover:text-primary">
|
||||
Realtime or Pipelines?
|
||||
</span>
|
||||
<span className="text-sm leading-relaxed text-foreground-light">
|
||||
Compare live user experiences over WebSocket with reliable data movement into
|
||||
analytical systems.
|
||||
</span>
|
||||
</a>
|
||||
</>
|
||||
),
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
export default page
|
||||
@@ -654,7 +654,7 @@ Foreign Data Wrappers simplify data integration by bringing external data into y
|
||||
4. Workload isolation: Keep analytical queries away from the primary database.
|
||||
|
||||
## Destinations
|
||||
BigQuery is currently available. ClickHouse, DuckLake, and Snowflake are in Early Access. [Request access](/go/supabase-pipelines-new-destinations) to these destinations.
|
||||
BigQuery, ClickHouse, DuckLake, and Snowflake are available in public alpha. See the [destination guides](/docs/guides/database/replication#supported-destinations) to get started.
|
||||
|
||||
## Setup
|
||||
Create a Postgres publication for the tables to replicate. In Database > Pipelines, add a Pipelines destination, configure its settings, and monitor the pipeline from the Dashboard.
|
||||
|
||||
@@ -40,6 +40,16 @@ module.exports = [
|
||||
source: '/features/supabase-etl',
|
||||
destination: '/features/supabase-pipelines',
|
||||
},
|
||||
{
|
||||
permanent: true,
|
||||
source: '/go/supabase-pipelines-new-destinations',
|
||||
destination: '/docs/guides/database/replication#supported-destinations',
|
||||
},
|
||||
{
|
||||
permanent: true,
|
||||
source: '/go/supabase-pipelines-new-destinations/thank-you',
|
||||
destination: '/docs/guides/database/replication#supported-destinations',
|
||||
},
|
||||
{
|
||||
permanent: true,
|
||||
source: '/ui/docs/ai-editors-rules/prompts',
|
||||
|
||||
Reference in new issue
Block a user