Skip to content

[SS-69] user-facing docs for Iceberg sink, now with GCP support#36773

Open
ublubu wants to merge 5 commits into
MaterializeInc:kynan/iceberg-gcpfrom
ublubu:kynan/iceberg-gcp-doc
Open

[SS-69] user-facing docs for Iceberg sink, now with GCP support#36773
ublubu wants to merge 5 commits into
MaterializeInc:kynan/iceberg-gcpfrom
ublubu:kynan/iceberg-gcp-doc

Conversation

@ublubu
Copy link
Copy Markdown
Contributor

@ublubu ublubu commented May 28, 2026

Adding docs for:

  • GCP connection
  • GCP Lakehouse/BigLake Iceberg Catalog Connection (BigLake is still the name of the API and everything in the GCP console, but it lives under a Lakehouse umbrella now.)

Small changes to docs for Iceberg sink.

@ublubu ublubu force-pushed the kynan/iceberg-gcp-doc branch 2 times, most recently from 3386be7 to 81cac44 Compare May 28, 2026 19:49
@ublubu ublubu force-pushed the kynan/iceberg-gcp-doc branch from 81cac44 to f582bfa Compare May 28, 2026 19:49
@ublubu ublubu marked this pull request as ready for review May 28, 2026 20:17
@ublubu ublubu requested a review from a team as a code owner May 28, 2026 20:17
@ublubu ublubu force-pushed the kynan/iceberg-gcp-doc branch from 1f326ad to 07ae4e1 Compare May 28, 2026 20:58

The name of the user to connect as.

- name: "syntax-gcp"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Q: How does this affect https://preview.materialize.com/materialize/36773/sql/create-connection/#s3-compatible-object-storage where we mention Google Cloud Storage ... ?

Comment on lines +645 to +646
AWS CONNECTION = <aws_connection>,
GCP CONNECTION = <gcp_connection>,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Kind of like what you did with the examples, I think probably might be cleaner splitting up the syntax and tabbing them.

As data changes in Materialize, the corresponding Iceberg tables are
automatically kept up to date. You can sink data from a materialized view, a
source, or a table.
Iceberg sinks provide exactly once delivery of updates from Materialize into
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we actually split this page into two?
The current iceberg.md can be a landing page that points people to iceberg-aws and iceberg-gcp or something like that?
All the steps in tabs makes it kind of confusing.

Comment on lines +200 to +209
```bash
base64 < key.json
```

```mzsql
CREATE SECRET gcp_service_account_key
AS decode('<base64-encoded service account key JSON>', 'base64');
```

We recommend you base64-encode the key avoid pasting a multi-line JSON literal into SQL.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

wondering if we can genericize this and include in the syntax table.
And for this specific example ... just make it part of the gcp example below. ... since it references the gcp_service_account_key.

Also, missing the word "to" in front of "avoid"

specify access parameters to your Iceberg catalog.
To create an Iceberg sink, you need an [Iceberg catalog
connection](/sql/create-connection/#iceberg-catalog) that specifies access
parameters to your Iceberg catalog.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the syntax section below ... maybe add a headless content that blurbs that the syntax has changed to remove the unused USING AWS CONNECTION and we can include it here and in the iceberg sink tutorial (and when the release notes get generated, we can include it in there possibly).

WAREHOUSE = '<warehouse>',
AWS CONNECTION = <aws_connection>,
GCP CONNECTION = <gcp_connection>,
SCOPE = '<scope>'
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's SCOPE? We don't include SCOPE in the syntax_elements.

base64 < key.json
```

The `decode(..., 'base64')` form below lets you paste the encoded value
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Move this sentence to step 2?

The `decode(..., 'base64')` form below lets you paste the encoded value
into SQL without worrying about embedded newlines or quotes in the JSON.

2. Store the key in a Materialize [secret](/sql/create-secret/):
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Store the base64-encoded key ...

);
testable: false

- name: "example-iceberg-catalog-gcp-connection"
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Purely optional. Since the example in the iceberg tutorial and the create sink page seem to be the same content (just different presentation ... either steps or one big code block), you could just single source from the yaml. (but, we likely won't be making tweaks too frequently so ..eh).

Use `CREATE SINK ... INTO ICEBERG CATALOG...` to create Iceberg sinks. Iceberg sinks write data from Materialize into an Iceberg table hosted on
AWS S3 Tables. As data changes in Materialize, your Iceberg tables are
automatically kept up to date.
Use `CREATE SINK ... INTO ICEBERG CATALOG...` to create Iceberg sinks. Iceberg
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we also fix the following page: https://github.com/MaterializeInc/materialize/blob/main/doc/user/content/sql/create-sink/_index.md ?
We seem to have broken it when we made changes to the syntax name changes for the append mode.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants