Migração de arquivos de definição de projeto da versão 1.x para 2.0

Para converter um arquivo de definição de projeto da versão 1.x para o formato da versão 2, faça o seguinte:

  1. Vá ao diretório do projeto com o arquivo snowflake.yml da versão 1.x.

  2. Digite o comando snow helpers v1-to-v2.

    • Se a conversão do arquivo da versão 1.x for bem-sucedida, o comando exibirá uma mensagem semelhante à seguinte:

      cd <project-directory>
      snow helpers v1-to-v2
      
      Copy
      Project definition migrated to version 2.
      
    • Se o arquivo de definição do projeto já tiver sido atualizado para a versão 2, o comando exibirá a seguinte mensagem:

      cd <project-directory>
      snow helpers v1-to-v2
      
      Copy
      Project definition is already at version 2.
      
  • Se você tentar converter um arquivo de projeto que contém um arquivo snowflake.local.yml, sem usar a opção --[no]-migrate-local-overrides, o comando gerará um erro semelhante ao seguinte:

  • Se você tentar converter um arquivo de projeto com modelos, sem usar a opção --accept-templates, o comando gerará um erro semelhante ao seguinte:

    cd <project-directory>
    snow helpers v1-to-v2
    
    Copy
    +- Error-------------------------------------------------------------------+
    | snowflake.local.yml file detected, please specify                        |
    | --migrate-local-overrides to include or --no-migrate-local-overrides to  |
    | exclude its values.                                                      |
    +--------------------------------------------------------------------------+
    
  • Se você converter um arquivo de definição de projeto com modelos e usar a opção --accept-templates, o comando converterá o arquivo e exibirá uma mensagem de aviso semelhante à seguinte:

    cd <project-directory>
    snow helpers v1-to-v2
    
    Copy
    WARNING  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
    

Conversão de projetos de Native Apps

Esta seção mostra um exemplo de uma conversão de V1 para V2 de um projeto Snowflake Native App, lista as alterações nos nomes das propriedade e oferece algumas dicas para ajudar na migração.

Exemplo de conversão de Snowflake Native App

Exemplo de conversão de projeto de Native Apps

Arquivo de projeto V1

Arquivo de projeto V2

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
Copy
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
Copy

Alterações de propriedade da V1 para V2 da definição do projeto do Native App

Alterações de propriedade da V1 para V2 da definição do projeto do Native App

Propriedade de V1

Propriedade de V2

native_app.name

Não há equivalente. Use uma variável de modelo para porta, se necessário.

native_app.deploy_root

<entidade de pacote>.deploy_root

native_app.generated_root

<entidade de pacote>.generated_root

native_app.bundle_root

<entidade de pacote>.bundle_root

native_app.source_stage

<entidade de pacote>.source_stage

native_app.scratch_stage

<entidade de pacote>.scratch_stage

native_app.artifacts

<entidade de pacote>.artifacts

native_app.application.debug

<entidade de aplicativo>.debug

native_app.application.name

<entidade de aplicativo>.identifier

native_app.application.post_deploy

<entidade de pacote>.meta.post_deploy (consulte as observações acima)

native_app.application.role

<entidade de aplicativo>.meta.role

native_app.application.warehouse

<entidade de aplicativo>.meta.warehouse

native_app.package.distribution

<entidade de pacote>.distribution

native_app.package.name

<entidade de pacote>.identifier

native_app.package.post_deploy

<entidade de pacote>.meta.post_deploy (consulte as observações acima)

native_app.package.role

<entidade de pacote>.meta.role

native_app.package.scripts

<entidade de pacote>.meta.post_deploy (consulte as observações acima)

native_app.package.warehouse

<entidade de pacote>.meta.warehouse

Dicas de migração

  • Ao migrar scripts de pacote do Snowflake Native App, o comando v1-to-v2 os converte em ganchos package post-deploy e substitui {{package_name}} no arquivo de script do pacote pela expressão de modelo equivalente.

  • Ao migrar expressões de modelo existentes, as variáveis ctx.native_app, ctx.streamlit e ctx.snowpark não são mais aceitas. O comando v1-to-v2 com expressões de modelo equivalentes que fazem referência ao nome da entidade específica. Por exemplo, ctx.native_app.package.name poderia ser substituído por ctx.entities.pkg.identifier se o pacote fosse migrado para uma entidade chamada pkg no arquivo snowflake.yml.

Conversão de projetos Streamlit

Esta seção mostra um exemplo de uma conversão de V1 para V2 de um projeto Streamlit, lista as alterações nos nomes das propriedade e oferece algumas dicas para ajudar na migração.

Exemplo de conversão do Streamlit

Exemplo de conversão do projeto Streamlit

Arquivo de projeto V1

Arquivo de projeto V2

definition_version: 1
streamlit:
  name: test_streamlit
  stage: streamlit
  query_warehouse: test_warehouse
  main_file: "streamlit_app.py"
  title: "My Fancy Streamlit"
Copy
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
Copy

Alterações de propriedade da V1 para V2 das definição do projeto Streamlit

Alterações de propriedade da V1 para V2 das definição do projeto Streamlit

Propriedade de V1

Propriedade de V2

streamlit.name

<entidade streamlit>.identifier.name

streamlit.schema

<entidade streamlit>.identifier.schema

streamlit.database

<entidade streamlit>.identifier.database

streamlit.comment

<entidade streamlit>.comment

streamlit.title

<entidade streamlit>.title

streamlit.query_warehouse

<entidade streamlit>.query_warehouse

streamlit.main_file

<entidade streamlit>.main_file e <entidade streamlit>.artifacts

streamlit.stage

<entidade streamlit>.stage

streamlit.env_file

<entidade streamlit>.artifacts

streamlit.pages_dir

<entidade streamlit>.pages_dir e <entidade streamlit>.artifacts

streamlit.additional_source_files

<entidade streamlit>.artifacts

Dicas de migração do Streamlit

Nenhum.

Conversão de projetos Snowpark

Esta seção mostra um exemplo de uma conversão de V1 para V2 de um projeto Snowpark, lista as alterações nos nomes das propriedade e oferece algumas dicas para ajudar na migração.

Exemplo de conversão do Snowpark

Exemplo de conversão de projeto Snowpark

Arquivo de projeto V1

Arquivo de projeto V2

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
Copy
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
Copy

Alterações de propriedade da V1 para V2 das definição do projeto Snowpark

Alterações de propriedade da V1 para V2 das definição do projeto Snowpark

Propriedade de V1

Propriedade de V2

snowpark.project_name

<entidade de função ou procedimento>.artifacts.dest para cada função e/ou procedimento migrado do projeto. Veja as notas acima sobre a migração do Snowpark. Cada função ou procedimento deve declarar um artefato com dest definido como o valor snowpark.project_name e src definido como o valor snowpark.src. Recomenda-se o uso de um mixin.

snowpark.stage_name

<entidade de função ou procedimento>.stage para cada função e/ou procedimento migrado do projeto.

snowpark.src

<entidade de função ou procedimento>.artifacts.src para cada função e/ou procedimento migrado do projeto. (consulte snowpark.project_name acima)

snowpark.functions (lista)

<entidades de função> (nível superior)

snowpark.procedures (lista)

<entidades de procedimento> (nível superior)

Alterações de propriedade da V1 para V2 das definição de funções e procedimentos Snowpark

Propriedade de V1

Propriedade de V2

name

identifier.name

schema

identifier.schema

database

identifier.database

handler

handler

returns

returns

signature

signature

runtime

runtime

external_access_integrations

external_access_integrations

secrets

secrets

imports

imports

execute_as_caller

execute_as_caller (apenas para procedimento)

Dicas de migração para Snowpark

  • Ao migrar projetos do Snowpark, cada função (da matriz snowpark.functions) ou procedimento (da matriz snowpark.procedures) é mapeado para uma entidade de nível superior.

  • Todas as propriedades de projeto Snowpark de nível superior (por exemplo, src) agora são definidas para cada função e procedimento. Para reduzir a duplicação, a Snowflake recomenda que você declare um mixin e o inclua em cada uma das entidades de função e procedimento migradas.