Affichage des données PostgreSQL dans Snowflake

Note

Le Snowflake Connector for PostgreSQL est soumis aux Conditions du connecteur.

Le connecteur réplique les données vers la base de données de destination, qui a été définie lors de la configuration du connecteur et de l’appel de PUBLIC.ADD_DATA_SOURCE('<data_source_name>', '<dest_db>').

Les tables de données contiennent les données répliquées et sont disponibles sous l’identificateur dest_db.schema_name.table_name, où :

  • dest_db est le nom de la base de données de destination.

  • schema_name est le nom du schéma dans lequel réside la table PostgreSQL d’origine.

  • table_name est le nom de la table PostgreSQL d’origine.

Note

dest_db, schema_name et table_name doivent être placés entre guillemets doubles au cas où leurs noms sont un mélange de majuscules et de minuscules.

Les tables répliquées contiennent les colonnes de métadonnées supplémentaires :

Nom de la colonne

Type de données

Description

_SNOWFLAKE_INSERTED_AT

TIMESTAMP_NTZ

Horodatage du moment où la ligne a été insérée dans la table de destination, au format UTC.

_SNOWFLAKE_UPDATED_AT

TIMESTAMP_NTZ

Horodatage de la dernière mise à jour de la ligne dans la table de destination, au format UTC.

_SNOWFLAKE_DELETED

BOOLEAN

La valeur est définie sur true si la ligne a été supprimée de la table source.

Les types de données répliqués sont mappés de sorte à correspondre aux types Snowflake. Pour plus d’informations, voir Mappage des types de données de PostgreSQL vers Snowflake.

Contrôle d’accès aux données répliquées

Pour contrôler l’accès aux données répliquées, utilisez le rôle d’application DATA_READER. Pour en savoir plus sur les rôles d’application de connecteur : Rôles d’application dans Snowflake Connector for PostgreSQL. Pour un contrôle plus granulaire de certains objets de destination, utilisez le rôle ACCOUNTADMIN pour accorder des privilèges appropriés ou créer des rôles de base de données.

Mappage des types de données de PostgreSQL vers Snowflake

Dans Snowflake, les noms de colonne des tables répliquées sont en majuscules et les types sont mappés de sorte à correspondre aux types Snowflake.

Le tableau suivant indique le mappage des types de données de PostgreSQL vers Snowflake.

Type PostgreSQL

Type Snowflake

Remarques

BIGINT / INT8

INT

BIGSERIAL / SERIAL8

INT

BIT [(N)]

VARCHAR

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

VARCHAR

BOOLEAN / BOOL

BOOLEAN

BOX

VARCHAR

BYTEA

BINARY(N)

Pris en charge jusqu’à la taille de point de données maximale dans Snowflake (16MB). Longueur maximale 1 GB.

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

VARCHAR [N]

Longueur maximale 10485760 ~= 10 MB

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

VARCHAR [N]

Longueur maximale 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

Pris en charge jusqu’à la taille de point de données maximale dans Snowflake (16MB).

JSONB

VARIANT

Pris en charge jusqu’à la taille de point de données maximale dans Snowflake (16MB).

LINE

VARCHAR

LSEG

VARCHAR

MACADDR

VARCHAR

MACADDR8

VARCHAR

MONEY

VARIANT

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

DECIMAL(P, S)

L’échelle et la précision sont également recréées côté Snowflake, préservant ainsi les limitations de 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)] [ sans fuseau horaire ]

TIME

TIME [(P)] avec fuseau horaire

TIME

TIMESTAMP [(P)] [ sans fuseau horaire ]

DATETIME / TIMESTAMP_NTZ

TIMESTAMP [(P)] avec fuseau horaire

TIMESTAMP_TZ

TSQUERY

VARCHAR

TSVECTOR

VARCHAR

UUID

VARCHAR

XML

VARCHAR

Tous les autres types, y compris les tableaux, ENUMs et les types et plages personnalisés sont mappés vers des valeurs VARCHAR dans Snowflake. Le tableau suivant illustre le mode de traitement des types non explicitement mentionnés dans le tableau ci-dessus.

Type PostgreSQL

Données dans PostgreSQL

Colonne dans Snowflake

ENUM

lundi

« lundi »

tableau d’INTEGER

{1,2,3,5}

« {1,2,3,5} »

intrange

[6,31)

« [6,31) »

type personnalisé (2 champs, INT4 et TEXT)

(valeur textuelle,5432)

« (valeur textuelle,5432) »

Affichage des données des colonnes supprimées

Si une colonne est supprimée dans la table source, elle ne sera pas supprimée dans la table de destination. Au lieu de cela, on adopte une approche de type suppression logicielle et le nom de la colonne sera remplacé par le <nom précédent>__SNOWFLAKE_DELETED afin que les valeurs historiques puissent encore être interrogées.

Par exemple, si une colonne A est supprimée, son nom sera remplacé par A__SNOWFLAKE_DELETED dans la table de destination et elle pourra être interrogée comme suit :

SELECT A__SNOWFLAKE_DELETED FROM <TABLE_NAME>;
Copy

Affichage des données de colonnes renommées

Le renommage d’une colonne équivaut à supprimer la colonne et à en créer une nouvelle portant le nouveau nom. La suppression suit l’approche de type suppression logicielle expliquée à la section précédente.

Par exemple, si la colonne A a été renommée B, dans la table de destination, la colonne A est renommée A__SNOWFLAKE_DELETED et une nouvelle colonne B est ajoutée. Toutes les lignes existantes avant la modification conservent les valeurs de la colonne dans la colonne A__SNOWFLAKE_DELETED, tandis que les valeurs des nouvelles lignes ajoutées après la modification sont placées dans la colonne B. Les valeurs de la colonne renommée peuvent être affichées sous la forme d’une seule colonne via une simple requête :

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

Une vue peut être créée pour simplifier l’utilisation après le changement de nom d’une colonne.

Prochaines étapes

Après avoir terminé ces procédures, passez en revue les processus à la section Tâches en cours Snowflake Connector for PostgreSQL