Controle de versão de clean room

Nota

Este tópico é para criadores de clean rooms. Os consumidores de clean room não precisam pensar em controle de versão de clean room.

Numeração de versão de clean room

As clean rooms Snowflake são versionadas. A versão inicial de uma clean room sem nenhum código Python é a V1.0.0.

O Snowflake cria automaticamente uma nova versão de uma sala limpa após determinados eventos do provedor, como carregar o código Python ou permitir tabelas externas ou Apache Iceberg™. O Snowflake cria uma nova versão somente se a verificação de segurança acionada por esta ação aprovar. Relativamente poucas ações do provedor podem gerar uma nova versão de sala limpa, e os procedimentos que criam a nova versão a mencionam na resposta do procedimento.

Ações reprovadas na verificação de segurança não geram uma nova versão.

Somente as ações do provedor podem resultar em uma nova versão de sala limpa; as ações do consumidor não.

O Snowflake aumenta apenas o número do patch (o último dígito) a cada nova versão. Portanto, os números de versão para três versões sucessivas seriam V1.0.0, V1.0.1 e V1.0.2.

As clean rooms são versionadas porque são implementadas como pacotes de aplicativos nativos. Na estrutura de aplicativos nativos do Snowflake, a convenção é que, para a versão V1.0.2, “V1.0” (uma cadeia de caracteres) é o número da versão e 2 (um número inteiro) é o número do patch. A documentação da clean room normalmente usa o termo “versão” para indicar o número inteiro (V1.0.1) em vez de simplesmente o prefixo “V1.0” (como às vezes é usado na estrutura do aplicativo nativo).

Você pode ver o histórico de versões e o status da revisão de uma determinada sala limpa chamando SHOW VERSIONS IN APPLICATION PACKAGE samooha_cleanroom_CLEANROOM_ID; com o ID da sala limpa.

Diretriz de versão padrão

Cada sala limpa recebe uma diretiva de lançamento padrão do provedor da sala limpa. A diretiva de lançamento padrão especifica qual versão da sala limpa deve ser instalada ou carregada na conta do usuário. Os consumidores não podem especificar qual versão de uma sala limpa deve ser instalada. As atualizações são gerenciadas automaticamente pelo Snowflake conforme determinação dos recursos disponíveis, e pode haver algum atraso até que a nova versão seja instalada na conta do usuário.

Um provedor de clean room deve especificar a diretiva de lançamento padrão de uma clean room antes que ela possa ser compartilhada inicialmente (interna ou externamente) ou sempre que o provedor fizer o upload do código e a verificação de segurança for aprovada. Se uma nova versão da clean room for gerada, mas a diretiva de lançamento padrão não for atualizada, os consumidores continuarão recebendo a última versão padrão.

Você sempre deve definir a diretiva de lançamento padrão antes de publicar uma sala limpa. Se você não adicionou um código Python, ele deverá ser V1.0.0, conforme mostrado aqui:

CALL samooha_by_snowflake_local_db.provider.set_default_release_directive(
  $cleanroom_name, 'V1_0', '0');
Copy

Um provedor de clean room pode reverter a diretiva de lançamento padrão para um lançamento anterior, se desejar.

Especifique a diretiva de lançamento padrão para uma clean room chamando provider.set_default_release_directive.

Um provedor deve definir a diretiva de lançamento padrão somente ao criar ou modificar uma sala limpa no código. O controle de versão é feito automaticamente ao usar a UI de salas limpas.

O Snowflake gera uma nova versão somente se a verificação de segurança acionada por uma ação do provedor aprovar. Portanto, você deve conferir o status da verificação de segurança de uma sala limpa chamando provider.view_cleanrooom_scan_status antes de atualizar a diretiva de lançamento padrão. Deixar de atualizar a diretiva de lançamento padrão não causará um erro, mas a versão mais recente com as respectivas alterações não será publicada aos usuários se você não atualizar a diretiva de lançamento padrão.

Salas limpas com erros

Se você publica uma sala limpa com um erro, o que acontece quando a verificação de segurança falha ou você carrega um código Python com um erro de sintaxe, um patch é gerado, mas você não pode usar essa versão como uma diretiva de lançamento padrão. Até você publicar uma versão corrigida, todos os patches adicionais incorporam o erro do patch anterior com falha e também resultam em um patch de sala limpa com falha.

Folha de referências de controle de versão

Liste todos os pacotes de clean room (clean rooms) criados nessa conta Snowflake:

SHOW APPLICATION PACKAGES STARTS WITH 'SAMOOHA_CLEANROOM_';
Copy

Liste todas as versões da clean room MY_FIRST_CLEANROOM:

SHOW VERSIONS IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_MY_FIRST_CLEANROOM;
Copy

Consulte a diretiva de lançamento padrão atual:

SHOW RELEASE DIRECTIVES IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_<your_clean_room_name>;
Copy

Verifique o status de revisão da verificação antes de definir a versão, se for uma clean room que acabou de tornar externa, ou se já for externa e a versão tiver sido alterada:

CALL samooha_by_snowflake_local_db.provider.view_cleanroom_scan_status('MY_FIRST_CLEANROOM');

-- When REVIEW_STATUS = APPROVED, you can update the default version to the
-- latest version, if you haven't done so already.
SHOW VERSIONS IN APPLICATION PACKAGE SAMOOHA_CLEANROOM_MY_FIRST_CLEANROOM;
CALL samooha_by_snowflake_local_db.provider.set_default_release_directive(
  $cleanroom_name, 'V1_0', '<<LATEST_PATCH_NUMBER>>');
Copy