Gerenciamento de bancos de dados, esquemas, tabelas e exibições Snowflake com Python¶
É possível usar Python para gerenciar bancos de dados, esquemas, tabelas e exibições Snowflake. Para obter mais informações sobre como gerenciar e trabalhar com dados no Snowflake, consulte Bancos de dados, tabelas e exibições - Visão geral.
Pré-requisitos¶
Os exemplos neste tópico pressupõem que você tenha adicionado código para se conectar ao Snowflake e criar um objeto Root a partir do qual usar o Snowflake Python APIs.
Por exemplo, o seguinte código usa parâmetros de conexão definidos em um arquivo de configuração para criar uma conexão com o Snowflake:
Usando o objeto Session resultante, o código cria um objeto Root para usar os tipos e métodos de API. Para obter mais informações, consulte Conexão ao Snowflake com o Snowflake Python APIs.
Gerenciamento de bancos de dados¶
Você pode gerenciar bancos de dados no Snowflake. O Snowflake Python APIs representa bancos de dados com dois tipos separados:
Database: expõe as propriedades de um banco de dados, como seu nome.DatabaseResource: Expõe métodos que você pode usar para buscar um objetoDatabasecorrespondente e descartar o banco de dados.
Tópicos
Como criar um banco de dados¶
Você pode criar um banco de dados chamando o método DatabaseCollection.create e passando um objeto Database que representa o banco de dados que você deseja criar. Para criar um banco de dados, primeiro crie um objeto Database que especifique o nome do banco de dados.
O código no exemplo a seguir cria um objeto Database que representa um banco de dados nomeado my_db e, em seguida, cria o banco de dados passando o objeto Database ao método DatabaseCollection.create:
Obtenção dos detalhes do banco de dados¶
Você pode obter informações sobre um banco de dados chamando o método DatabaseResource.fetch, que retorna um objeto Database.
O código no exemplo a seguir obtém informações sobre um banco de dados nomeado my_db:
Listagem dos bancos de dados¶
Você pode listar bancos de dados usando o método iter, que retorna um iterador PagedIter.
O código no exemplo a seguir lista bancos de dados cujos nomes começam com my:
Descarte ou restauração de um banco de dados¶
Você pode descartar um banco de dados usando o método DatabaseResource.drop ou restaurar um banco de dados usando o método DatabaseResource.undrop.
Para demonstrar essas operações, o código do exemplo a seguir descarta e, em seguida, restaura a versão mais recente do banco de dados my_db:
Gerenciamento de esquemas¶
Você pode gerenciar esquemas no Snowflake. Um esquema é um objeto no nível do banco de dados. Ao criar ou referenciar um esquema, você faz isso no contexto de seu banco de dados.
O Snowflake Python APIs representa esquemas com dois tipos separados:
Schema: expõe as propriedades de um esquema, como seu nome.SchemaResource: Expõe métodos que você pode usar para buscar um objetoSchemacorrespondente e descartar o esquema.
Tópicos
Criação de um esquema¶
Para criar um esquema, primeiro crie um objeto Schema que especifique o nome do esquema.
O código no exemplo a seguir cria um objeto Schema que representa um esquema nomeado my_schema:
O código então cria o esquema no banco de dados my_db passando o objeto Schema para o método SchemaCollection.create.
Obtenção de detalhes do esquema¶
Você pode obter informações sobre um esquema chamando o método SchemaResource.fetch, que retorna um objeto Schema.
O código no exemplo a seguir obtém um objeto Schema que representa o esquema my_schema:
Listagem de esquemas¶
Você pode listar os esquemas em um banco de dados especificado usando o método iter. O método retorna um iterador PagedIter de objetos Schema.
O código no exemplo a seguir lista os nomes dos esquemas no banco de dados my_db:
Descarte ou restauração de um esquema¶
Você pode descartar um esquema usando o método SchemaResource.drop ou restaurar um esquema usando o método SchemaResource.undrop.
Para demonstrar essas operações, o código do exemplo a seguir descarta e, em seguida, restaura a versão mais recente do esquema my_schema:
Gerenciamento de tabelas padrão¶
É possível gerenciar tabelas padrão no Snowflake. Uma tabela é um objeto no nível do esquema. Ao criar ou referenciar uma tabela, você faz isso no contexto de seu esquema.
O Snowflake Python APIs representa tabelas com dois tipos separados:
Table: expõe as propriedades de uma tabela, como nome e colunas.TableResource: Expõe métodos que podem ser usados para buscar um objetoTablecorrespondente, atualizar as propriedades da tabela e excluir a tabela.
Tópicos
Como criar uma tabela¶
Para criar uma tabela, primeiro crie um objeto Table que especifique o nome da tabela, os nomes das colunas e os tipos de dados das colunas.
O código no exemplo a seguir cria um objeto Table que representa uma tabela nomeada my_table com as colunas especificadas:
O código cria então a tabela no banco de dados my_db e esquema my_schema passando o objeto Table para o método TableCollection.create.
Obtenção de detalhes da tabela¶
Você pode obter informações sobre uma tabela chamando o método TableResource.fetch, que retorna um objeto Table.
O código no exemplo a seguir obtém informações sobre uma tabela nomeada my_table:
Criação ou alteração de uma tabela¶
É possível definir as propriedades de um objeto Table e passá-las ao método TableResource.create_or_alter para criar uma tabela, caso ela não exista, ou alterá-la de acordo com a definição da tabela, caso ela exista. O comportamento do create_or_alter deve ser idempotente, o que significa que o objeto da tabela resultante será o mesmo, independentemente de a tabela existir ou não antes de você chamar o método.
Nota
O método create_or_alter usa valores padrão para quaisquer propriedades da tabela que você não define explicitamente. Por exemplo, se você não definir data_retention_time_in_days, seu valor padrão será None mesmo se a tabela já existisse com um valor diferente.
O código no exemplo a seguir acrescenta uma nova coluna nomeada c3 de tipo de dados int à tabela my_table e, em seguida, altera a tabela no Snowflake:
Listagem de tabelas¶
Você pode listar as tabelas em um esquema especificado usando o método iter, que retorna um iterador PagedIter de objetos Table.
O código no exemplo a seguir lista tabelas cujos nomes começam com my:
Troca de nomes de tabelas¶
Você pode trocar o nome de uma tabela pelo nome de outra tabela em uma única transação usando o método TableResource.swap_with. Para obter mais informações, consulte a descrição do parâmetro SWAP WITH em ALTER TABLE.
O código no exemplo a seguir troca my_table por other_table no mesmo banco de dados e esquema:
O código no exemplo a seguir troca my_table (no banco de dados my_db e no esquema my_schema) por other_table (no banco de dados other_db e no esquema other_schema):
Execução de operações de tabela¶
Você pode executar operações comuns de tabela — como gerenciar reclustering para uma tabela e descartar ou restaurar uma tabela — com um objeto TableResource.
Para obter mais informações sobre essas operações de tabela, consulte Comandos de tabela, exibição, sequência e tipo definido pelo usuário na referência do comando SQL.
Para demonstrar algumas operações que você pode fazer com um recurso de tabela, o código do exemplo a seguir faz o seguinte:
Obtém o objeto de recurso da tabela
my_tableno banco de dadosmy_dbe no esquemamy_schema.Suspende o reclustering da tabela.
Retoma o reclustering da tabela.
Descarta a tabela.
Restaura a versão mais recente da tabela descartada.
Gerenciamento de tabelas de evento¶
É possível gerenciar tabelas de evento Snowflake, que são um tipo especial de tabela do banco de dados com um conjunto predefinido de colunas onde o Snowflake pode coletar dados de telemetria. Para obter mais informações, consulte Visão geral da tabela de evento.
O Snowflake Python APIs representa tabelas de evento com dois tipos separados:
EventTable: Expõe as propriedades de uma tabela de evento, como nome, tempo de retenção de dados, tempo máximo de extensão de dados e opção de rastreamento de alterações.EventTableResource: Expõe métodos que você pode usar para buscar um objetoEventTablecorrespondente, renomear a tabela de evento e descartar a tabela de evento.
Tópicos
Criação de uma tabela de evento¶
Para criar uma tabela de evento, primeiro crie um objeto EventTable e, em seguida, crie um objeto EventTableCollection a partir do objeto Root da API. Usando EventTableCollection.create, adicione a nova tabela de evento ao Snowflake.
O código no exemplo a seguir cria um objeto EventTable que representa uma tabela de evento nomeada my_event_table com os parâmetros especificados:
O código cria uma variável EventTableCollection chamada event_tables e usa EventTableCollection.create para criar uma nova tabela de evento no Snowflake.
Como obter detalhes da tabela de evento¶
É possível obter informações sobre uma tabela de evento chamando o método EventTableResource.fetch, que retorna um objeto EventTable.
O código no exemplo a seguir obtém informações sobre uma tabela de evento nomeada my_event_table:
Listagem de tabelas de evento¶
É possível listar tabelas de evento usando o método EventTableCollection.iter, que retorna um iterador PagedIter de objetos EventTable.
O código no exemplo a seguir lista tabelas de evento cujos nomes começam com my no banco de dados my_db e no esquema my_schema e imprime o nome de cada uma:
O código no exemplo a seguir também lista tabelas de evento cujos nomes começam com my, mas usa o parâmetro starts_with em vez de like. Este exemplo também define o parâmetro opcional show_limit=10 para limitar o número de resultados para 10:
Execução de operações de tabela de evento¶
É possível executar operações comuns de tabela de evento – como renomear uma tabela de evento e descartar uma tabela de evento – com um objeto EventTableResource.
Nota
Atualmente, somente a funcionalidade RENAME de ALTER TABLE (tabelas de eventos) é compatível.
RENAME não é compatível na tabela de evento padrão, SNOWFLAKE.TELEMETRY.EVENTS.
Para demonstrar as operações que você pode fazer com um recurso de tabela de evento, o código no exemplo a seguir faz o seguinte:
Obtém o objeto de recurso da tabela de eventos
my_event_tableno banco de dadosmy_dbe no esquemamy_schema.Renomeia a tabela de evento.
Descarta a tabela de evento.
Gerenciamento de exibições¶
É possível gerenciar exibições no Snowflake. Uma exibição é um objeto ao nível de esquema e permite que o resultado de uma consulta seja acessado como se fosse uma tabela. Ao criar ou referenciar uma exibição, você faz isso no contexto de seu esquema.
Nota
ALTER VIEW não é compatível atualmente.
O Snowflake Python APIs representa exibições com dois tipos separados:
View: Expõe as propriedades de uma exibição, como nome, colunas e instrução de consulta SQL.ViewResource: Expõe métodos que você pode usar para buscar um objetoViewcorrespondente e descartar a exibição.
Tópicos
Criação de uma exibição¶
Para criar uma exibir, primeiro crie um objeto View que especifique o nome da exibição, as colunas e a instrução de consulta SQL.
O código no exemplo a seguir cria um objeto View que representa uma exibição nomeada my_view com as colunas e consulta SQL especificadas:
O código então cria a exibição no banco de dados my_db e no esquema my_schema passando o objeto View ao método ViewCollection.create.
Como obter os detalhes de exibição¶
É possível obter informações sobre uma exibição chamando o método ViewResource.fetch, que retorna um objeto View.
O código no exemplo a seguir obtém um objeto View que representa a exibição my_view:
Exibições de listagem¶
É possível listar as exibições em um banco de dados especificado usando o método iter. O método retorna um iterador PagedIter de objetos View.
O código no exemplo a seguir lista as exibições cujo nome começa com my no banco de dados my_db e no esquema my_schema:
O código no exemplo a seguir também lista as exibições cujos nomes começam com my, mas usa o parâmetro starts_with em vez de like. Este exemplo também define o parâmetro opcional show_limit=10 para limitar o número de resultados para 10:
Descarte de uma exibição¶
É possível descartar uma exibição usando o método ViewResource.drop.
O código no exemplo a seguir descarta a exibição my_view: