Visualização de dados PostgreSQL no Snowflake

Nota

O Snowflake Connector for PostgreSQL está sujeito aos Termos do conector.

O conector replica dados para o banco de dados de destino, que foi definido durante a configuração do conector e a chamada de PUBLIC.ADD_DATA_SOURCE('<data_source_name>', '<dest_db>').

As tabelas de dados contêm os dados replicados e estão disponíveis no identificador dest_db.schema_name.table_name onde:

  • dest_db é o nome do banco de dados de destino.

  • schema_name é o nome do esquema no qual a tabela PostgreSQL original reside.

  • table_name é o nome da tabela PostgreSQL original.

Nota

dest_db, schema_name e table_name precisam estar entre aspas duplas caso seus nomes sejam compostos por letras maiúsculas e minúsculas.

As tabelas replicadas contêm as colunas de metadados adicionais:

Nome da coluna

Tipo de dados

Descrição

_SNOWFLAKE_INSERTED_AT

TIMESTAMP_NTZ

Carimbo de data/hora de quando a linha foi inserida na tabela de destino, em UTC.

_SNOWFLAKE_UPDATED_AT

TIMESTAMP_NTZ

Carimbo de data/hora da última atualização da linha na tabela de destino, em UTC.

_SNOWFLAKE_DELETED

BOOLEAN

O valor é true se a linha foi excluída da tabela de origem.

Os tipos de dados replicados são mapeados para corresponder aos tipos Snowflake. Para obter mais informações, consulte PostgreSQL para mapeamento de tipo de dados Snowflake.

Controle de acesso a dados replicados

Para controlar o acesso aos dados replicados, use a função de aplicativo DATA_READER. Mais sobre funções de aplicativo do conector: Funções de aplicativo no Snowflake Connector for PostgreSQL Para um controle mais granular sobre objetos de destino específicos, use a função ACCOUNTADMIN para conceder privilégios adequados ou criar funções de banco de dados.

PostgreSQL para mapeamento de tipo de dados Snowflake

No Snowflake, os nomes das colunas das tabelas replicadas são escritos em maiúsculas e os tipos são mapeados para corresponder aos tipos do Snowflake.

A tabela a seguir mostra o mapeamento dos tipos PostgreSQL para Snowflake.

Tipo de PostgreSQL

Tipo Snowflake

Notas

BIGINT / INT8

INT

BIGSERIAL / SERIAL8

INT

BIT [(N)]

VARCHAR

BIT VARYING [(N)] / VARBIT [(n)]

VARCHAR

BOOLEAN / BOOL

BOOLEAN

BOX

VARCHAR

BYTEA

BINARY(N)

Compatível até o tamanho máximo do ponto de dados no Snowflake (16MB). Comprimento máximo de 1 GB.

CHARACTER [(N)] / CHAR [(N)]

VARCHAR [N]

Comprimento máximo 10485760 ~= 10 MB

CHARACTER VARYING [(N)] / VARCHAR [(N)]

VARCHAR [N]

Comprimento máximo 10485760 ~= 10 MB

CIDR

VARCHAR

CIRCLE

VARCHAR

DATE

DATE

DOUBLE PRECISION / FLOAT8

FLOAT

INET

VARCHAR

INTEGER / INT / INT4

INT

INTERVAL [FIELDS][(P)]

VARCHAR

JSON

VARIANT

Compatível até o tamanho máximo do ponto de dados no Snowflake (16MB).

JSONB

VARIANT

Compatível até o tamanho máximo do ponto de dados no Snowflake (16MB).

LINE

VARCHAR

LSEG

VARCHAR

MACADDR

VARCHAR

MACADDR8

VARCHAR

MONEY

VARIANT

NUMERIC [(P, S)] / DECIMAL [(P, S)]

DECIMAL(P, S)

Escala e precisão também são recriadas no lado do Snowflake, preservando as limitações do Snowflake.

PATH

VARCHAR

PG_LNS

VARCHAR

POINT

VARCHAR

POLYGON

VARCHAR

REAL / FLOAT4

FLOAT

SMALLINT / INT2

INT

SMALLSERIAL / SERIAL2

INT

SERIAL / SERIAL4

INT

TEXT

VARCHAR

TIME [(P)] [ sem fuso horário ]

TIME

TIME [(P)] com fuso horário

TIME

TIMESTAMP [(P)] [ sem fuso horário ]

DATETIME / TIMESTAMP_NTZ

TIMESTAMP [(P)] com fuso horário

TIMESTAMP_TZ

TSQUERY

VARCHAR

TSVECTOR

VARCHAR

UUID

VARCHAR

XML

VARCHAR

Todos os outros tipos, incluindo matrizes, ENUMs, tipos personalizados e intervalos são mapeados para valores VARCHAR no Snowflake. A tabela a seguir ilustra como os tipos não mencionados explicitamente na tabela acima são tratados.

Tipo de PostgreSQL

Dados em PostgreSQL

Coluna em Snowflake

ENUM

monday

«monday»

Matriz de INTEGER

{1,2,3,5}

«{1,2,3,5}»

IntRange

[6,31)

«[6,31)»

Tipo personalizado (2 campos, INT4 e TEXT)

(text value,5432)

«(text value,5432)»

Visualização dos dados de colunas excluídas

Se uma coluna for excluída na tabela de origem, ela não será excluída na tabela de destino. Em vez disso, uma abordagem de exclusão suave é adotada, e a coluna será renomeada para o <nome anterior>__SNOWFLAKE_DELETED para que os valores históricos ainda possam ser consultados.

Por exemplo, se uma coluna A for excluída, ela será renomeada para A__SNOWFLAKE_DELETED na tabela de destino e poderá ser consultada como:

SELECT A__SNOWFLAKE_DELETED FROM <TABLE_NAME>;
Copy

Visualização dos dados de colunas renomeadas

Renomear uma coluna é o mesmo que excluir a coluna e criar uma nova com o novo nome. A exclusão segue a abordagem de exclusão suave explicada na seção anterior.

Por exemplo, se a coluna A foi renomeada para B – na tabela de destino A foi renomeada para A__SNOWFLAKE_DELETED e uma nova coluna B foi adicionada. Todas as linhas existentes antes da alteração mantêm os valores da coluna na coluna A__SNOWFLAKE_DELETED, enquanto as novas linhas adicionadas após a alteração mantêm os valores na coluna B. Os valores da coluna renomeada podem ser visualizados como uma única coluna com uma consulta simples:

SELECT
     CASE WHEN B IS NULL THEN A__SNOWFLAKE_DELETED ELSE B END AS A_RENAMED_TO_B
FROM <TABLE_WITH_RENAMED_COLUMN>;
Copy

Uma exibição pode ser criada para simplificar o uso depois que uma coluna for renomeada.

Próximos passos

Após concluir esses procedimentos, revise os processos em Tarefas Snowflake Connector for PostgreSQL em andamento.