Affichage des données MySQL dans Snowflake

Note

Le Snowflake Connector for MySQL 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 MySQL d’origine.

  • table_name est le nom de la table MySQL 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 MySQL 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 MySQL. 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 MySQL 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 montre comment les types de données du connecteur sont mappés vers les types Snowflake.

Type MySQL

Type Snowflake

Remarques

DECIMAL / NUMERIC

NUMBER

Le nombre maximal de chiffres au format DECIMAL pour MySQL est 65. Pour Snowflake, le maximum est 38.

Pris en charge jusqu’au nombre maximal de chiffres autorisés dans Snowflake. Lorsque ce nombre est dépassé, la précision est perdue. Pour plus d’informations, voir Types de données numériques.

INT / INTEGER

INT

TINYINT / BOOL

INT

SMALLINT

INT

MEDIUMINT

INT

BIGINT

INT

YEAR

INT

FLOAT

FLOAT

DOUBLE

FLOAT

VARCHAR

VARCHAR

TINYTEXT

VARCHAR

TEXT

VARCHAR

ENUM

VARCHAR

Stocké sous forme de chaîne. Par exemple, pour ENUM(“un”, “deux”), les valeurs possibles sont : “un”, “deux”.

SET

VARCHAR

Stocké sous forme de chaîne jointe par des virgules dans l’ordre de déclaration des colonnes. Par exemple, pour SET(“un”, “deux”), les valeurs possibles sont : “ “, “un”, “deux”, “un,deux”.

MEDIUMTEXT

VARCHAR

Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake (16MB).

LONGTEXT

VARCHAR

Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake (16MB).

CHAR

VARCHAR

Envoyé à Snowflake sans les espaces de fin.

BIT

VARCHAR

Représenté au format hexadécimal, par exemple : “83060c183060c183”.

DATE

DATE

Stocké dans les tables cibles sous forme de chaînes, par exemple “1971-01-31”. Dans les vues aplaties, la date est convertie en DATE.

DATETIME

DATETIME / TIMESTAMP_NTZ

TIMESTAMP

TIMESTAMP_TZ

Stocké dans les tables cibles sous forme de chaînes au format UTC, par exemple “2000-12-30 23:59:59.001009+00:00”. Dans les vues aplaties, les horodatages sont convertis en TIMESTAMP_TZ.

TIME

TIME

Stocké dans les tables cibles sous forme de chaînes, par exemple “23:59:59”. Dans les vues aplaties, les valeurs d’heure sont converties en TIME.

BINARY

BINARY

MEDIUMBLOB

BINARY

Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake, qui est de 16MB.

LONGBLOB

BINARY

Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake, qui est de 16MB.

BLOB

BINARY

VARBINARY

BINARY

TINYBLOB

BINARY

JSON

VARIANT

JSON peut être stocké dans le BinLog MySQL sous forme de document complet ou de mise à jour partielle. Par défaut, il est stocké sous forme de document complet. Les mises à jour partielles ne sont actuellement pas prises en charge.

Les JSONs sont envoyés à Snowflake sous forme de chaînes, mais Snowpipe Streaming les convertit en type de données VARIANT et les stocke en interne sous forme d’ARRAY, d’OBJECT, etc.

Pris en charge jusqu’à la taille d’entrée maximale dans Snowflake, qui est de 16MB.

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 MySQL