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 |
---|---|---|
|
TIMESTAMP_NTZ |
Carimbo de data/hora de quando a linha foi inserida na tabela de destino, em UTC. |
|
TIMESTAMP_NTZ |
Carimbo de data/hora da última atualização da linha na tabela de destino, em UTC. |
|
BOOLEAN |
O valor é |
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>;
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>;
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.