Gerenciamento de objetos Snowflake

Os comandos snow object fornecem uma maneira conveniente de gerenciar a maioria dos objetos Snowflake, como estágios, funções Snowpark ou aplicativos Streamlit. Em vez de usar comandos separados para cada tipo de objeto, você pode usar esses comandos para executar tarefas comuns, incluindo o seguinte:

Para ver uma lista de tipos suportados, use a opção --help para qualquer um dos comandos snow object, como os seguintes:

snow object list --help
Copy
Usage: snow object list [OPTIONS] OBJECT_TYPE

Lists all available Snowflake objects of given type.
Supported types: compute-pool, database, function, image-repository, integration, network-rule,
procedure, role, schema, secret, service, stage, stream, streamlit, table, task,
user, view, warehouse

...

Os subcomandos de objeto permitem que você execute operações comuns, deixando grupos de comandos específicos de serviço dedicados a operações específicas de serviço.

Criação de um objeto de um tipo específico

O comando snow object create cria um objeto especificado com base na definição fornecida, usando a seguinte sintaxe:

snow object create TYPE ([OBJECT_ATTRIBUTES]|[--json {OBJECT_DEFINITION}])
Copy

onde:

  • TYPE é um tipo de objeto Snowflake:

    • account

    • catalog-integration

    • compute-pool

    • database

    • database-role

    • dynamic-table

    • event-table

    • external-volume

    • function

    • image-repository

    • managed-account

    • network-policy

    • notebook

    • notification-integration

    • pipe

    • procedure

    • role

    • schema

    • service

    • stage

    • stream

    • table

    • task

    • user-defined-function

    • view

    • warehouse

  • OBJECT_ATTRIBUTES contém a definição do objeto no formato de uma lista de pares <key>=<value>, como:

    snow object create database name=my_db comment="Created with Snowflake CLI"
    
    Copy
  • --json {OBJECT_DEFINITION} contém a definição do objeto em JSON, como:

    snow object create database --json '{"name":"my_db", "comment":"Created with Snowflake CLI"}'
    
    Copy

Nota

Os seguintes tipos de objeto exigem que um banco de dados seja identificado na configuração de conexão, como config.toml, ou passado para o comando usando a opção --database.

  • image-repository

  • esquema

  • serviço

  • tabela

  • tarefa

Para criar um objeto de banco de dados usando o parâmetro option-attributes:

snow object create database name=my_db comment='Created with Snowflake CLI'
Copy

Para criar um objeto de tabela usando o parâmetro option-attributes:

snow object create table name=my_table columns='[{"name":"col1","datatype":"number", "nullable":false}]' constraints='[{"name":"prim_key", "column_names":["col1"], "constraint_type":"PRIMARY KEY"}]' --database my_db
Copy

Para criar um banco de dados usando a opção --json object-definition:

snow object create database --json '{"name":"my_db", "comment":"Created with Snowflake CLI"}'
Copy

Para criar uma tabela usando a opção --json object-definition:

snow object create table --json "$(cat table.json)" --database my_db
Copy

onde table.json contém o seguinte:

{
  "name": "my_table",
  "columns": [
    {
      "name": "col1",
      "datatype": "number",
      "nullable": false
    }
  ],
  "constraints": [
    {
      "name": "prim_key",
      "column_names": ["col1"],
      "constraint_type": "PRIMARY KEY"
    }
  ]
}
Copy

Listar todos os objetos de um tipo específico

O comando snow object list lista todos os objetos de um determinado tipo disponíveis com suas permissões.

snow object list TYPE
Copy

em que TYPE é o tipo do objeto. Use snow object list --help para obter a lista completa dos tipos suportados.

Para listar todos os objetos de função, digite o seguinte comando:

snow object list role
Copy
+--------------------------------------------------------------------------------------------------------------------------------+
|            |            |            |            | is_inherit | assigned_t | granted_to | granted_ro |            |           |
| created_on | name       | is_default | is_current | ed         | o_users    | _roles     | les        | owner      | comment   |
|------------+------------+------------+------------+------------+------------+------------+------------+------------+-----------|
| 2023-07-24 | ACCOUNTADM | N          | N          | N          | 2          | 0          | 2          |            | Account   |
| 06:05:49-0 | IN         |            |            |            |            |            |            |            | administr |
| 7:00       |            |            |            |            |            |            |            |            | ator can  |
|            |            |            |            |            |            |            |            |            | manage    |
|            |            |            |            |            |            |            |            |            | all       |
|            |            |            |            |            |            |            |            |            | aspects   |
|            |            |            |            |            |            |            |            |            | of the    |
|            |            |            |            |            |            |            |            |            | account.  |
| 2023-07-24 | PUBLIC     | N          | N          | Y          | 0          | 0          | 0          |            | Public    |
| 06:05:48.9 |            |            |            |            |            |            |            |            | role is   |
| 56000-07:0 |            |            |            |            |            |            |            |            | automatic |
| 0          |            |            |            |            |            |            |            |            | ally      |
|            |            |            |            |            |            |            |            |            | available |
|            |            |            |            |            |            |            |            |            | to every  |
|            |            |            |            |            |            |            |            |            | user in   |
|            |            |            |            |            |            |            |            |            | the       |
|            |            |            |            |            |            |            |            |            | account.  |
| 2023-07-24 | SYSADMIN   | N          | N          | N          | 0          | 1          | 0          |            | System    |
| 06:05:49.0 |            |            |            |            |            |            |            |            | administr |
| 33000-07:0 |            |            |            |            |            |            |            |            | ator can  |
| 0          |            |            |            |            |            |            |            |            | create    |
|            |            |            |            |            |            |            |            |            | and       |
|            |            |            |            |            |            |            |            |            | manage    |
|            |            |            |            |            |            |            |            |            | databases |
|            |            |            |            |            |            |            |            |            | and       |
|            |            |            |            |            |            |            |            |            | warehouse |
|            |            |            |            |            |            |            |            |            | s.        |
| 2023-07-24 | USERADMIN  | N          | N          | N          | 0          | 1          | 0          |            | User      |
| 06:05:49.0 |            |            |            |            |            |            |            |            | administr |
| 45000-07:0 |            |            |            |            |            |            |            |            | ator can  |
| 0          |            |            |            |            |            |            |            |            | create    |
|            |            |            |            |            |            |            |            |            | and       |
|            |            |            |            |            |            |            |            |            | manage    |
|            |            |            |            |            |            |            |            |            | users and |
|            |            |            |            |            |            |            |            |            | roles     |
+--------------------------------------------------------------------------------------------------------------------------------+

Você também pode usar o --like [-l] <padrão> para filtrar objetos por nome usando um padrão SQL LIKE. Por exemplo, list function --like "my%" lista todas as funções que começam com my. Para mais informações sobre padrões de sintaxe SQL, consulte palavra-chave SQL LIKE.

Para listar apenas objetos de função que começam com a cadeia de caracteres público, digite o seguinte comando:

snow object list role --like public%
Copy
show roles like 'public%'
+-------------------------------------------------------------------------------
| created_on                       | name        | is_default | is_current | ...
|----------------------------------+-------------+------------+------------+----
| 2023-02-01 15:25:04.105000-08:00 | PUBLIC      | N          | N          | ...
| 2024-01-15 12:55:05.840000-08:00 | PUBLIC_TEST | N          | N          | ...
+-------------------------------------------------------------------------------

Exibir a descrição de um objeto de um tipo especificado

O comando snow object describe fornece uma descrição de um objeto de um determinado tipo.

snow object describe TYPE IDENTIFIER
Copy

onde:

  • TYPE é o tipo do objeto. Use snow object describe --help para obter a lista completa dos tipos suportados.

  • IDENTIFIER é o nome do objeto. Para procedimentos e funções, o identificador deve especificar tipos de argumentos, como "hello(int,string)".

Para descrever um objeto de função, insira um comando semelhante ao seguinte:

snow object describe function "hello_function(string)"
Copy
describe function hello_function(string)
+---------------------------------------------------------------------
| property           | value
|--------------------+------------------------------------------------
| signature          | (NAME VARCHAR)
| returns            | VARCHAR(16777216)
| language           | PYTHON
| null handling      | CALLED ON NULL INPUT
| volatility         | VOLATILE
| body               | None
| imports            |
| handler            | functions.hello_function
| runtime_version    | 3.8
| packages           | ['snowflake-snowpark-python']
| installed_packages | ['_libgcc_mutex==0.1','_openmp_mutex==5.1',...
+---------------------------------------------------------------------

Excluir um objeto de um tipo especificado

O comando snow object drop exclui um objeto Snowflake de nome e tipo fornecidos.

snow object drop TYPE IDENTIFIER
Copy

onde:

  • TYPE é o tipo do objeto. Use snow object drop --help para obter a lista completa dos tipos suportados.

  • IDENTIFIER é o nome do objeto. Para procedimentos e funções, o identificador deve especificar tipos de argumentos, como "hello(int,string)".

Para descartar um procedimento, insira um comando semelhante ao seguinte:

snow object drop procedure "test_procedure()"
Copy
drop procedure test_procedure()
+--------------------------------------+
| status                               |
|--------------------------------------|
| TEST_PROCEDURE successfully dropped. |
+--------------------------------------+