-
Notifications
You must be signed in to change notification settings - Fork 4.9k
docs: expand Snowflake v4 migration guide with detailed instructions #69729
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
docs: expand Snowflake v4 migration guide with detailed instructions #69729
Conversation
- Add step-by-step UI instructions for enabling Disable Final Tables in v3 - Provide detailed guidance for users with both raw and final tables - Document raw table naming patterns for v2/v3 and v4 - Add SQL queries for finding and dropping legacy raw tables - Fix typo: Snowfalke -> Snowflake - Fix terminology: database -> schema for airbyte_internal Co-Authored-By: [email protected] <[email protected]>
Original prompt from [email protected] |
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
👋 Greetings, Airbyte Team Member!Here are some helpful tips and reminders for your convenience. Helpful Resources
PR Slash CommandsAirbyte Maintainers (that's you!) can execute the following slash commands on your PR:
|
| 2. For each Snowflake destination you have, add an identical second Snowflake destination. | ||
|
|
||
| 3. Ensure each pair of Snowflake connectors have opposite settings for <!-- Devin: fill out the rest of this step to use Disable Final Tables from Snowflake v3 --> | ||
| 3. Ensure each pair of Snowflake connectors have opposite settings for **Disable Final Tables** (in version 3) or **Legacy raw tables** (in version 4). One connector should have this setting enabled, and the other should have it disabled. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Google.WordList] Use 'turn off' or 'off' instead of 'disabled'.
|
|
||
| 5. Update your connections to point to the appropriate destination: | ||
| - Connections that need raw tables only should target the destination with **Disable Final Tables** or **Legacy raw tables** enabled. | ||
| - Connections that need final tables should target the destination with this setting disabled. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Google.WordList] Use 'turn off' or 'off' instead of 'disabled'.
|
|
||
| The table names match these patterns depending on which version created them: | ||
|
|
||
| - **Version 2/3 (Typing and Deduping)**: `raw_{namespace}__{stream}` (for example, `airbyte_internal.raw_public__users`) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚫 [vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'Deduping'?
| - **Version 2/3 (Typing and Deduping)**: `raw_{namespace}__{stream}` (for example, `airbyte_internal.raw_public__users`) | ||
| - **Version 4 (Legacy raw tables mode)**: `{namespace}_raw__stream_{stream}` (for example, `airbyte_internal.public_raw__stream__users`) | ||
|
|
||
| Note: The number of underscores between `raw` and `stream` may vary depending on the longest underscore sequence in your namespace and stream names. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Google.Colons] ': T' should be in lowercase.
|
|
||
| :::note | ||
| Version 4 of the Snowfalke destination uses the `airbyte_internal` database for temporary scratch space (for example, streams running in dedup mode, truncate refreshes, and overwrite syncs). Dropping the entire `airbyte_internal database` can interrupt active syncs and cause data loss. Only drop the specific raw tables you no longer need. | ||
| Version 4 of the Snowflake destination uses the `airbyte_internal` schema for temporary scratch space (for example, streams running in dedup mode, truncate refreshes, and overwrite syncs). Dropping the entire `airbyte_internal` schema can interrupt active syncs and cause data loss. Only drop the specific raw tables you no longer need. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚫 [vale] reported by reviewdog 🐶
[Vale.Spelling] Did you really mean 'dedup'?
|
Deploy preview for airbyte-docs ready! ✅ Preview Built with commit 0735277. |
| 3. Click **Edit configuration**. | ||
|
|
||
| 4. Open the **Advanced** section. | ||
|
|
||
| 5. Turn on **Disable Final Tables**. | ||
|
|
||
| 6. Click **Save**. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you check these UI steps? They don't appear to be correct to me.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for catching this! I based the UI steps on the v4 spec placement, but I don't have access to verify the exact v3 UI flow. Could you confirm:
- Is "Edit configuration" the correct button text, or should it be something else (e.g., "Edit", "Settings")?
- Is "Disable Final Tables" located under an "Advanced" section in v3, or is it in a different location?
- Are there any other UI differences I should be aware of?
I can update the steps once I know the correct v3 UI flow, or I can make them more location-agnostic if the exact path varies.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
- It should be enough to open the Connector. It defaults to the "Settings" tab and you don't need to click "Edit Configuration". I don't even think that label exists.
- Unclear, but you should be able to determine this by examining the connector's historical source code for a commit prior to version 4.0.
- The "Save" button is always "Test and save" in the UI in Airbyte.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the clarification! I've updated the steps to:
- Remove "Click Edit configuration" (since it defaults to Settings tab)
- Keep "Open the Advanced section" (verified by checking the v3 spec at commit 2ea4544^ - the
disable_type_dedupefield had"group": "advanced") - Change "Save" to "Test and save"
The updated steps are now:
- In the navigation bar, click Destinations.
- Open your Snowflake connector.
- Open the Advanced section.
- Turn on Disable Final Tables.
- Click Test and save.
Pushing this change now.
| 6. Click **Save**. | ||
|
|
||
| :::note | ||
| After upgrading to version 4, this setting appears as **Legacy raw tables** and should remain enabled. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Don't use "should". Just say it remains enabled and assume success.
| 2. For each Snowflake destination you have, add an identical second Snowflake destination. | ||
|
|
||
| 3. Ensure each pair of Snowflake connectors have opposite settings for <!-- Devin: fill out the rest of this step to use Disable Final Tables from Snowflake v3 --> | ||
| 3. Ensure each pair of Snowflake connectors have opposite settings for **Disable Final Tables** (in version 3) or **Legacy raw tables** (in version 4). One connector should have this setting enabled, and the other should have it disabled. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We should assume at this point they haven't upgraded and use the V3 instructions only.
| 4. Configure distinct default schemas for each destination to avoid table name collisions. | ||
|
|
||
| 5. Update your connections to point to the appropriate destination: | ||
| - Connections that need raw tables only should target the destination with **Disable Final Tables** or **Legacy raw tables** enabled. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ditto about not using V4 instructions before they upgrade
| 3. Ensure each pair of Snowflake connectors have opposite settings for <!-- Devin: fill out the rest of this step to use Disable Final Tables from Snowflake v3 --> | ||
| 3. Ensure each pair of Snowflake connectors have opposite settings for **Disable Final Tables** (in version 3) or **Legacy raw tables** (in version 4). One connector should have this setting enabled, and the other should have it disabled. | ||
|
|
||
| 4. Configure distinct default schemas for each destination to avoid table name collisions. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you elaborate on this a bit more? I'm not convinced everyone knows how to do this.
- Remove 'should' wording, assume success (comment 2543815075) - Use V3 terminology only, remove V4 references before upgrade (comments 2543817615, 2543818089) - Elaborate on schema configuration with concrete examples (comment 2543819122) - Fix markdownlint trailing spaces in SQL code blocks - Change 'enabled/disabled' to 'turned on/off' per Vale style guide Co-Authored-By: [email protected] <[email protected]>
|
I've addressed most of your feedback in commit 2e8bdd5: Completed changes:
Pending:
Once you confirm the correct UI flow for v3, I'll update those steps and the PR will be ready for final review. You can preview the updated documentation here: https://airbyte-docs-aokexb71k-airbyte-growth.vercel.app/integrations/destinations/snowflake-migrations |
| 3. Ensure each pair of Snowflake connectors have opposite settings for **Disable Final Tables**. One connector should have this setting turned on, and the other should have it turned off. | ||
|
|
||
| 4. Configure distinct default schemas for each destination to avoid table name collisions: | ||
| - For the destination that will create final tables, set a distinct **Schema** in the Snowflake destination configuration (for example, `ANALYTICS_V4`). This is where final tables will be written. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Google.Will] Avoid using 'will'.
| 3. Ensure each pair of Snowflake connectors have opposite settings for **Disable Final Tables**. One connector should have this setting turned on, and the other should have it turned off. | ||
|
|
||
| 4. Configure distinct default schemas for each destination to avoid table name collisions: | ||
| - For the destination that will create final tables, set a distinct **Schema** in the Snowflake destination configuration (for example, `ANALYTICS_V4`). This is where final tables will be written. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Google.Will] Avoid using 'will'.
|
|
||
| 4. Configure distinct default schemas for each destination to avoid table name collisions: | ||
| - For the destination that will create final tables, set a distinct **Schema** in the Snowflake destination configuration (for example, `ANALYTICS_V4`). This is where final tables will be written. | ||
| - For the raw-only destination (with **Disable Final Tables** turned on), set a distinct **Airbyte Internal Table Dataset Name** under the **Advanced** section (for example, `AIRBYTE_INTERNAL_RAW`). This is where raw tables will be written. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[Google.Will] Avoid using 'will'.
- Remove 'Edit configuration' step (defaults to Settings tab) - Keep 'Advanced' section (verified in v3 spec) - Change 'Save' to 'Test and save' (correct button label) Addresses comment 2543835428 Co-Authored-By: [email protected] <[email protected]>
1c67397
into
docs-snowflake-4-detailed-migration-guide
This PR targets the following PR:
What
This PR expands the Snowflake destination V4 migration guide by filling in 6 placeholder
<!-- Devin:comments with detailed, actionable instructions for users migrating from version 3 to version 4.The expansion addresses:
airbyte_internalHow
The changes were made by:
SnowflakeSpecification.kt,SnowflakeNameGenerators.kt,TypingDedupingUtil.kt)Review guide
Critical items requiring verification:
UI steps (lines 27-31): Verify these steps match the actual v3 UI flow:
"group": "advanced")Schema configuration guidance (lines 49-55): Confirm the field names and examples match what users see in the UI:
ANALYTICS_V4,AIRBYTE_INTERNAL_RAW)Raw table naming patterns (lines 73-80): Validate these patterns are accurate:
raw_{namespace}__{stream}{namespace}_raw__stream_{stream}(with variable underscores based on longest underscore run)SQL queries (lines 88-108): Test these Snowflake SQL commands work correctly:
SHOW TABLES IN SCHEMA <DATABASE>.<INTERNAL_SCHEMA> LIKE 'RAW\_%';DROP TABLE IF EXISTS <DATABASE>.<INTERNAL_SCHEMA>.<TABLE_NAME>;Terminology fix (line 77): Confirm
airbyte_internalis correctly referred to as a "schema" not a "database" - this is critical for user safety.Migration flow completeness (lines 47-65): Review the 7-step process for users with both raw and final tables to ensure it's logical, complete, and uses only v3 terminology (no V4 references before upgrade).
User Impact
Positive:
airbyte_internalschemaPotential risks:
Can this PR be safely reverted and rolled back?
This is purely documentation - no code changes. Reverting would restore the placeholder comments.
Link to Devin run: https://app.devin.ai/sessions/72110afd12ce49dc9203f7763a3e9962
Requested by: [email protected] (@ian-at-airbyte)
Note: The UI steps and SQL queries were verified through code review and historical source analysis but have not been tested in live v3/Snowflake environments. Reviewer verification is important, especially for the UI flow and SQL syntax.