SQL Developer Data Modeler pour prendre en charge Snowflake VARIANT

SQL Developer Data Modeler pour prendre en charge Snowflake VARIANT


Lors d’un récent appel client, les architectes de données demandaient si Snowflake fournissait un outil de création de diagrammes de modèles de données pour concevoir et générer des tables d’entrepôt de données ou pour afficher un modèle de données d’un entrepôt de données Snowflake existant. Ou si nous en connaissions qui fonctionneraient avec Snowflake.

Eh bien, nous ne fournissons pas l’un des nôtres – notre service est le Snowflake Elastic Data Warehouse (#ElasticDW).

La bonnes nouvelles est qu’il existe des outils de modélisation de données dans l’écosystème plus large que vous pouvez bien sûr utiliser (puisque nous sommes conformes à ANSI SQL).

Vous avez peut-être vu plusieurs messages (sur mon compte personnel Blog) où j’ai utilisé Oracle SQL Developer Data Modeler (alias SDDM) à rétro-ingénieur et repenser une base de données Snowflake. (Pour rappel, SDDM est un libre d’utilisation outil de modélisation de données de classe entreprise que vous pouvez télécharger à partir d’Oracle ici.)

Si vous avez lu mon précédent des postes sur l’utilisation de JSON dans le Snowflake, vous savez également que nous avons un nouveau type de données appelé UNE VARIANTE pour stocker des données semi-structurées telles que JSON, AVRO et XML.

Dans cet article, je vais le rassembler et vous montrer les étapes pour personnaliser SDDM pour vous permettre de modéliser et générer table DDL contenant des colonnes utilisant le type de données VARIANT.

Création d’un type de données défini par l’utilisateur

L’une des fonctionnalités de Snowflake est que vous pouvez exécuter la plupart des syntaxes Oracle DDL (entre autres) sans pour autant modifications pour créer vos tables, vues et contraintes dans une base de données Snowflake (afin de faciliter la migration de votre entrepôt de données actuel vers notre service d’entrepôt de données basé sur le cloud). Cela signifie donc que vous pouvez créer votre modèle d’entrepôt de données dans SDDM, générer le DDL à l’aide de la syntaxe Oracle, puis l’exécuter sans aucune modification.

Bien sûr, Oracle n’a pas de UNE VARIANTE type de données, donc SDDM ne l’a pas non plus. Bien que vous puissiez assez facilement définir le vôtre type de données personnalisé à utiliser dans les modèles et sortie dans créer un tableau Déclarations DDL.

Je savais que la fonctionnalité était là, mais j’avais du mal à la faire faire ce que je voulais, alors j’ai posté une question sur le Forum OTN pour le modélisateur de données et comme d’habitude, Philip (l’architecte principal de Data Modeler) a répondu et m’a expliqué les étapes. Comme il l’a dit, et vous le verrez, ce n’est pas tout à fait simple et c’est un peu un scénario de poule et d’œuf.

Définir un type natif défini par l’utilisateur

Il faut d’abord aller à Outils -> Administration des types et accédez à l’onglet des types natifs définis par l’utilisateur. Choisissez ensuite le type de RDBMS auquel vous souhaitez associer le nouveau type. J’ai utilisé Oracle Database 12c (rappelez-vous qu’il n’y a pas d’option Snowflake native). appuyez sur la vert plus (+) pour créer une nouvelle entrée. Sous type natif, donnez-lui un nom (dans mon cas VARIANT), puis sous Type logique, sélectionnez l’un des types standard. J’ai utilisé CLOB pour l’instant (il s’agit vraiment d’un paramètre temporaire que je modifierai sous peu).

Définir le type personnalisé 1

Notez qu’il existe d’autres options pour « A la taille » et « A la précision et l’échelle » que vous pouvez utiliser si le type que vous souhaitez définir aura besoin de ces propriétés, mais pour VARIANT, vous ne définissez pas la taille ou la précision, donc je les ai laissées décochées.

Ajouter un nouveau type logique

C’était l’étape qui n’était pas évidente du tout pour moi. Il s’avère que lorsque vous définissez le type de données sur une colonne, vous sélectionnez généralement un type de données logique (sauf si vous choisissez un domaine). Pour que cela fonctionne, nous devons ajouter un nouveau type logique pour mapper notre type de données VARIANT.

Nous devons donc maintenant passer au premier onglet de la boîte de dialogue Administration des types. C’est celui étiqueté « Types logiques vers types natifs ».

Dans cet onglet, cliquez sur le Ajouter un bouton en bas à gauche. Vous pouvez maintenant saisir un nouveau nom de type logique. J’ai nommé le mien VARIANT pour éviter toute confusion. L’élément clé consiste maintenant à le mapper au type natif qui a été défini à l’étape précédente. Pour ce faire, vous choisissez dans le menu déroulant de la base de données que vous avez configurée (dans ce cas, Oracle 12c). Dans cette liste se trouve le type VARIANT. Une fois que cela est sélectionné, vous devez être sûr de frapper APPLIQUER et alors ENREGISTRER.

Définir un nouveau type logique

Notez que si vous souhaitez définir un nouveau type pour plusieurs bases de données et versions, vous devrez également répéter ce processus pour toutes les autres.

Changez maintenant le type natif d’origine

Encore une fois, ce n’est pas une étape si évidente, mais revenez à l’onglet « Types natifs définis par l’utilisateur » (le 3e onglet) et cliquez sur le menu déroulant Type logique. Faites défiler jusqu’en bas et vous devriez voir votre nouveau type logique défini. Choisissez-le puis appuyez sur le ENREGISTRER bouton à nouveau. Maintenant vous pouvez PROCHE la boîte de dialogue (et enregistrez votre conception être sûr!)

Affiner le type personnalisé 2

Vous avez maintenant défini le type de données personnalisé afin qu’il puisse être utilisé !

Appliquer le type défini par l’utilisateur

À ce stade, vous pouvez soit définir une nouvelle colonne à l’aide de votre type de données personnalisé, soit en modifier une existante pour modifier le type de données.

Dans mon cas, j’ai inversé une table dans Snowflake qui contenait une colonne VARIANT (avant d’apporter ces modifications aux types de données).

VARIANTE dans l'interface utilisateur Snowflake

Comme SDDM ne savait pas ce qu’était VARIANT, il l’a deviné et l’a attribué au Type de Source de VARCHAR.

Importation de VARIANT

Notez que le Type de données la propriété est définie sur Logique bouton radio – d’où la nécessité de configurer un Type logique aussi.

Avec le nouveau type défini, je peux maintenant simplement modifier la colonne et sélectionner VARIANT dans la liste déroulante. Il semble que les types personnalisés vont au bas de la liste.

Affecter VARIANT à la colonne

N’oubliez pas d’appuyer APPLIQUER ou D’ACCORD pour enregistrer la réaffectation.

Générer le DDL

Une fois l’affectation terminée, cliquez avec le bouton droit de la souris sur le tableau dans le diagramme et sélectionnez Aperçu DDL. Vous devriez voir que le DDL inclut les colonnes utilisant le type de données nouvellement défini.

VARIANTE DDL

Essaye-le!

Dans mon cas, je viens de copier le DDL à partir de la fenêtre d’aperçu et de le coller dans l’interface utilisateur Web de Snowflake, puis de l’exécuter.

Succès! Ça a marché!

Je peux maintenant utiliser Oracle SQL Developer Data Modeler pour concevoir des tables pour une base de données Snowflake qui incluent des colonnes utilisant notre type de données VARIANT innovant.

Et maintenant vous savez comment le faire !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.