Migrating project definition files from version 1.x to 2.0¶
To convert a version 1.x project definition file to the version 2 format, do the following:
Go to your project directory that contains the version 1.x
snowflake.ymlfile.Enter the
snow helpers v1-to-v2command.If the version 1.x file conversion succeeds, the command displays a message similar to the following:
cd <project-directory> snow helpers v1-to-v2
Project definition migrated to version 2.If your project definition file is already updated to version 2, the command displays the following message:
cd <project-directory> snow helpers v1-to-v2
Project definition is already at version 2.
If you try to convert a project file that contains a
snowflake.local.ymlfile, without using the--[no]-migrate-local-overridesoption, the command generates an error similar to the following:
If you try to convert a project file that contains templates, without using the
--accept-templatesoption, the command generates an error similar to the following:cd <project-directory> snow helpers v1-to-v2+- Error-------------------------------------------------------------------+ | snowflake.local.yml file detected, please specify | | --migrate-local-overrides to include or --no-migrate-local-overrides to | | exclude its values. | +--------------------------------------------------------------------------+If you convert a project definition file that contains templates, and use the
--accept-templatesoption, the command converts the file and displays a warning message similar to the following:cd <project-directory> snow helpers v1-to-v2WARNING snowflake.cli._plugins.workspace.commands:commands.py:60 Your V1 definition contains templates. We cannot guarantee the correctness of the migration. Project definition migrated to version 2
Convert Native App projects¶
This section shows an example from a V1 to V2 conversion of a Snowflake Native App project, lists the changes in property names, and offers some tips to help with migration.
Snowflake Native App conversion example¶
V1 project file | V2 project file |
|---|---|
definition_version: 1 native_app: name: myapp source_stage: app_src.stage artifacts: - src: app/* dest: ./ processors: - native app setup - name: templates properties: foo: bar package: role: pkg_role distribution: external application: name: myapp_app warehouse: app_wh | definition_version: 2 entities: pkg: type: application package meta: role: pkg_role identifier: <% fn.concat_ids('myapp', '_pkg_', fn.sanitize_id(fn.get_username('unknown_user')) | lower) %> manifest: app/manifest.yml artifacts: - src: app/* dest: ./ processors: - name: native app setup - name: templates properties: foo: bar stage: app_src.stage app: meta: warehouse: app_wh identifier: myapp_app type: application from: target: pkg |
Native App project definition V1 to V2 property changes¶
V1 property | V2 property |
|---|---|
| No equivalent. Use a template variable to port, if required. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Migration tips¶
When migrating Snowflake Native App package scripts, the
v1-to-v2command converts them topackage post-deployhooks and replaces{{package_name}}in the package script file with the equivalent template expression.When migrating existing template expressions,
ctx.native_app,ctx.streamlit, andctx.snowparkvariables are no longer accepted. Thev1-to-v2command with equivalent template expressions that reference the specific entity name instead. For example,ctx.native_app.package.namecould be replaced withctx.entities.pkg.identifierif the package was migrated to an entity namedpkgin thesnowflake.ymlfile.
Convert Streamlit projects¶
This section shows an example from a V1 to V2 conversion of a Streamlit project, lists the changes in property names, and offers some tips to help with migration.
Streamlit conversion example¶
V1 project file | V2 project file |
|---|---|
definition_version: 1 streamlit: name: test_streamlit stage: streamlit query_warehouse: test_warehouse main_file: "streamlit_app.py" title: "My Fancy Streamlit" | definition_version: 2 entities: test_streamlit: identifier: name: test_streamlit type: streamlit title: My Fancy Streamlit query_warehouse: test_warehouse main_file: streamlit_app.py pages_dir: None stage: streamlit artifacts: - streamlit_app.py |
Streamlit project definition V1 to V2 property changes¶
V1 property | V2 property |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Streamlit migration tips¶
None.
Convert Snowpark projects¶
This section shows an example from a V1 to V2 conversion of a Snowpark project, lists the changes in property names, and offers some tips to help with migration.
Snowpark conversion example¶
V1 project file | V2 project file |
|---|---|
definition_version: 1 snowpark: project_name: "my_snowpark_project" stage_name: "dev_deployment" src: "app/" functions: - name: func1 handler: "app.func1_handler" signature: - name: "a" type: "string" default: "default value" - name: "b" type: "variant" returns: string runtime: 3.10 procedures: - name: procedureName handler: "hello" signature: - name: "name" type: "string" returns: string | definition_version: 2 entities: procedureName: imports: [] external_access_integrations: [] secrets: {} meta: use_mixins: - snowpark_shared identifier: name: procedureName handler: hello returns: string signature: - name: name type: string stage: dev_deployment artifacts: - src: app dest: my_snowpark_project type: procedure execute_as_caller: false func1: imports: [] external_access_integrations: [] secrets: {} meta: use_mixins: - snowpark_shared identifier: name: func1 handler: app.func1_handler returns: string signature: - name: a type: string default: default value - name: b type: variant runtime: '3.10' stage: dev_deployment artifacts: - src: app dest: my_snowpark_project type: function mixins: snowpark_shared: stage: dev_deployment artifacts: - src: app/ dest: my_snowpark_project |
Snowpark project definition V1 to V2 property changes¶
V1 property | V2 property |
|---|---|
|
|
|
|
|
|
|
|
|
|
V1 property | V2 property |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Snowpark migration tips¶
When migrating Snowpark projects, each function (from the
snowpark.functionsarray) or procedure (from thesnowpark.proceduresarray) maps to a top-level entity.All top-level Snowpark project properties (e.g.
src) are now defined for each function and procedure. To reduce duplication, Snowflake recommends that you declare amixinand include it in each of the migrated function and procedure entities.