Skip to content

Iceberg Integration documentation #5929

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

Closed
wants to merge 59 commits into from
Closed
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
d92a19c
Iceberg Integration
MeelahMe Mar 19, 2025
5d7bc7f
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
f873263
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
8391ce7
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
8b454e0
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
57c024c
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
9563143
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
3f82fb6
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
0478e05
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
4a1f036
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
091c315
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 19, 2025
a32d724
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
d22f3fb
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
0a5d3f5
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
7bc3352
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
22c19be
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
e9345af
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
4693ece
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
8ea52b7
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
836e31b
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 20, 2025
a4eefaa
Merge branch 'master' into inceberg
jstirnaman Mar 20, 2025
3283130
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
6c55f87
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
7c6a630
updating headings
MeelahMe Mar 21, 2025
d353d01
Adding a numbered-list TOC
MeelahMe Mar 21, 2025
677ed17
Added an export command example
MeelahMe Mar 21, 2025
accaffe
Proof read: improving grammar and clarity
MeelahMe Mar 21, 2025
8b8257b
Adding explanations for examples
MeelahMe Mar 21, 2025
ffc8014
Updating examples
MeelahMe Mar 21, 2025
bb7a0d3
Merge branch 'master' into inceberg
MeelahMe Mar 21, 2025
05d4858
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
aa6b36a
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
7e260b5
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
bd472c8
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
1ad0ffa
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
b022d25
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
b712851
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
c5d58ee
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
9adfbda
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
37888c0
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
4e6e034
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
e79725d
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
a4e2b80
Update content/shared/influxdb3-query-guides/snapshots/snowflake.md
MeelahMe Mar 21, 2025
aebe441
removing run export example and adding
MeelahMe Mar 26, 2025
277fcde
Changes to- Example: Export data using Iceberg exporter
MeelahMe Mar 26, 2025
07f6551
Adding note to- Export InfluxDB time series data to Iceberg format
MeelahMe Mar 26, 2025
4b2ee68
removing reduandant sections and information
MeelahMe Mar 26, 2025
0c31daa
removing IOX references
MeelahMe Mar 26, 2025
6cd3c82
Rewriting section to focus and clarify that Iceberg table is done wit…
MeelahMe Mar 26, 2025
8adec72
removing entier section: Interfaces for using Iceberg integration sec…
MeelahMe Mar 26, 2025
92208e4
Adding read-only note to section
MeelahMe Mar 26, 2025
c9e26fa
updating TOC numbe4r list
MeelahMe Mar 26, 2025
cb02320
Updating who to contact for Snowflake Integration
MeelahMe Mar 26, 2025
4d259fb
Restructuring, reving, and proof reading edit
MeelahMe Mar 26, 2025
a8badd6
google dev style read through
MeelahMe Mar 26, 2025
83b6570
updating prereqs
MeelahMe Mar 26, 2025
3b56fee
Merge branch 'master' into inceberg
MeelahMe Mar 26, 2025
6eed23c
wip: removing tab shortcode to figure out error
MeelahMe Mar 26, 2025
6c09ef4
Merge branch 'iceberg' of github.com:influxdata/docs-v2 into iceberg
MeelahMe Mar 26, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
177 changes: 177 additions & 0 deletions content/shared/influxdb3-query-guides/snapshots/snowflake.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
# Snowflake integration

Integrate {{< product-name >}} with Snowflake without complex ETL processes.
Export time series data snapshots into Apache Iceberg format and query directly from Snowflake.

> **Note**: Contact [InfluxData sales](https://www.influxdata.com/contact-sales/) to enable this capability for your organization.

## Key benefits

- **Efficient data access**: Query your data directly from Snowflake.
- **Cost-effective storage**: Optimize data retention and minimize storage costs.
- **Supports AI and ML workloads**: Enhance machine learning applications by making time-series data accessible in Snowflake.

## Prerequisites

Before you begin, ensure you have the following:

- **{{< product-name >}} Cloud Dedicated plan** or compatible environment

## Request Iceberg integration

1. Contact [InfluxData sales](https://www.influxdata.com/contact-sales/) to request Iceberg integration.

2. Be prepared to provide:
- Your organization ID
- Customer name
- Cloud provider and region
- External storage details (bucket name, region, permissions)
- Technical contact information

> **Note**: Iceberg integration is a premium feature that requires setup by the InfluxData team.

## Integrate InfluxDB 3 with Snowflake

Once you've contacted sales and enabled Iceberg integration, your InfluxData support engineers will help you with the following steps:

1. [Create a Snowflake external stage](#create-a-snowflake-external-stage)
2. [Export InfluxDB time series data to Iceberg format](#export-influxdb-time-series-data-to-iceberg-format)
3. [Create an Iceberg table in Snowflake](#create-an-iceberg-table-in-snowflake)
4. [Query the Iceberg table from Snowflake](#query-the-iceberg-table-from-snowflake)

### Create a Snowflake external stage

Your support engineer will guide you through setting up a Snowflake external stage using the `CREATE STAGE` Snowflake SQL command. This establishes an external storage location (such as AWS S3) to store Iceberg table data and metadata.

#### Example: Configure an S3 stage in Snowflake

```sql
CREATE STAGE my_s3_stage
URL='s3://my-bucket/'
STORAGE_INTEGRATION=my_storage_integration;
```

### Set up a catalog integration in Snowflake

Your support engineer will help you set up a catalog integration in Snowflake to manage and load Iceberg tables efficiently.

#### Example: Create a catalog integration in Snowflake

```sql
CREATE CATALOG INTEGRATION my_catalog_integration
CATALOG_SOURCE = 'OBJECT_STORE'
TABLE_FORMAT = 'ICEBERG'
ENABLED = TRUE;
```

For more information, refer to the [Snowflake documentation](https://docs.snowflake.com/en/user-guide/tables-iceberg-configure-catalog-integration).

### Export InfluxDB time series data to Iceberg format

> **Note**: Before exporting InfluxDB time series data to Iceberg format, ensure that the relevant InfluxDB tables are properly set up. Please reach out to your support engineers to configure the tables that need to be exported.

#### Using the CLI

Use the `influxctl` command to export InfluxDB time-series data to Iceberg format:

```sh
influxctl snapshot export --namespace foo --table bar
```

#### Using the API

Use the {{% product-name %}} HTTP API to export snapshots and check status.

##### Example: Export a snapshot

This example demonstrates how to export a snapshot of your data from InfluxDB to an Iceberg table using the HTTP API.

- **Method**: `POST`
- **Endpoint**: `/snapshots/export`
- **Request body**:

```json
{
"namespace": "foo",
"table": "bar"
}
```
The `POST` request to the `/snapshots/export` endpoint triggers the export of data from the specified namespace and table in InfluxDB to an Iceberg table. The request body specifies the namespace (`foo`) and the table (`bar`) to be exported.

##### Example: Check snapshot status

This example shows how to check the status of an ongoing or completed snapshot export using the HTTP API.

- **Method**: `GET`
- **Endpoint**: `/snapshots/status`

The `GET` request to the `/snapshots/status` endpoint retrieves the status of the snapshot export. This can be used to monitor the progress of the export or verify its completion.

{{% /tab-pane %}}
{{% /tab-content %}}
{{< /tabs-wrapper >}}

#### Creating a configuration file

Before running the export command, you need to create a configuration file that specifies which tables to export:

1. Create a file named `config.json` in your working directory
2. Add the following JSON content, adjusting the namespace and table names to match your data:

```json
{
"exports": [
{
"namespace": "company_sensors",
"table_name": "cpu"
}
]
}
```

This configuration file tells the exporter which InfluxDB tables to convert to Iceberg format. You can list multiple tables by adding more objects to the exports array.

After configuring the export settings in the `config.json` file, the system automatically handles the export process. The export generates an Iceberg metadata file that you'll reference when creating your Iceberg table in Snowflake.

### Create an Iceberg table in Snowflake

After the export process is complete, you can work with your InfluxData support engineer to create an Iceberg table in Snowflake that references your exported data. If you do not have access to a support engineer, refer to the Snowflake documentation or consult your database administrator for assistance. Here's what happens during this step:

After the export process is complete, you'll work with your InfluxData support engineer to create an Iceberg table in Snowflake that references your exported data. Here's what happens during this step:

> **Note**: **Tables created through this integration are read-only.**
> **You cannot write directly to these tables using Snowflake or any other engine.**
> They serve as an analytics interface to your InfluxDB data.

1. Your support engineer will provide you with the location of the Iceberg metadata file generated during the export process.

2. Using this information, you or your database administrator will execute a SQL command in Snowflake similar to:

```sql
CREATE ICEBERG TABLE my_iceberg_table
EXTERNAL_VOLUME = 'my_external_volume'
METADATA_FILE_PATH = 's3://my-bucket/path/to/metadata.json';
```

3. Your support engineer will help ensure the EXTERNAL_VOLUME and METADATA_FILE_PATH parameters correctly point to your external storage and metadata file.

This creates a table in Snowflake that reads directly from the Iceberg-formatted data exported from your InfluxDB instance.

### Query the Iceberg table from Snowflake

Once the Iceberg table is set up, you can query it using standard SQL in Snowflake.

#### Example: Query the Iceberg table

```sql
SELECT * FROM my_iceberg_table
WHERE timestamp > '2025-01-01';
```

## Considerations and limitations

When exporting data from InfluxDB to an Iceberg table, keep the following considerations and limitations in mind:

- **Data consistency**: Ensure that the exported data in the Iceberg table is consistent with the source data in InfluxDB.
- **Performance**: Query performance may vary based on data size and query complexity.
- **Feature support**: Some advanced features of InfluxDB may not be fully supported in Snowflake through Iceberg integration.