Ajout de transformations SQL
Vous pouvez inclure des tables basées sur SQL dans des tâches de transformation. Une transformation SQL vous permet de saisir une requête SQL SELECT dans un pipeline pour définir des transformations simples ou complexes. Vous pouvez laisser l'Assistant SQL générer une requête à partir d'une invite textuelle via l'IA générative. Vous pouvez également utiliser des macros pour adapter la requête à exécuter si un chargement initial ou un chargement incrémentiel est effectué.
Pour plus d'informations sur la création d'une tâche de transformation, voir Transformation des données.
Ajout d'une transformation SQL
Pour ajouter une transformation SQL dans une tâche de données Transformer :
-
Dans Transformer, sélectionnez les jeux de données à inclure dans la requête, puis cliquez sur Ajouter une transformation SQL.
Définissez le nom de la transformation dans Nom. Pour plus d'informations sur les autres paramètres, consultez Paramètres.
Cliquez sur Ajouter lorsque vous êtes prêt à créer la transformation SQL.
Modifier la transformation SQL apparaît.
-
Écrivez la requête pour renvoyer la table basée sur SQL dans le volet de requête.
Pour plus d'informations, consultez Modification de la requête SQL..
-
Cliquez sur Exécuter la requête.
Cela récupérera les métadonnées et un aperçu des données.
-
Examinez les paramètres dans Paramètres.
Pour plus d'informations, consultez Paramètres.
-
Définissez une clé primaire dans Métadonnées.
Pour plus d'informations, consultez Métadonnées.
-
Une fois que vous êtes satisfait des résultats de la requête, cliquez sur Enregistrer et fermer. Le jeu de données est maintenant ajouté à la liste de cibles et vous pouvez en afficher un aperçu.
Modification de la requête SQL.
Saisissez la requête pour renvoyer la table basée sur SQL dans le volet de requête. La requête peut lire uniquement les jeux de données sources que vous avez sélectionnés, mais vous pouvez ajouter davantage de jeux de données sources via Ajouter.
-
Vous pouvez créer une instruction pour charger un jeu de données à partir d'Objets. Cliquez sur
, puis sur Générer l'instruction SELECT dans l'éditeur.
-
Vous pouvez copier le nom d'un jeu de données dans le Presse-papiers en cliquant sur
, puis sur Copier.
-
Cliquez sur > pour déplacer un nom de colonne ou jeu de données vers l'éditeur.
-
Cliquez sur
pour rechercher et remplacer du texte dans l'éditeur.
Si l'option Chargement incrémentiel est utilisée, vous pouvez utiliser des Macros pour adapter la requête à exécuter si un chargement initial ou un chargement incrémentiel est effectué.
Pour plus d'informations, consultez Utilisation de macros pour adapter la requête au type de chargement.
Raccourcis clavier
-
Ctrl+F Rechercher et remplacer
-
Ctrl+/ Commenter/décommenter la ligne active
-
Ctrl+Entrée Exécuter la requête
-
Ctrl+Z Annuler
-
Ctrl+Y Rétablir
Aperçu des résultats
Vous pouvez afficher un aperçu des résultats via un échantillon des données dans Résultats.
Pour pouvoir afficher un aperçu des données, vous devez recevoir les rôles suivants :
-
Peut afficher des données dans l'espace dans lequel réside la connexion.
-
Accès en lecture dans l'espace dans lequel réside le projet.
Les résultats via un échantillon des données apparaissent. Vous pouvez définir le nombre de lignes de données à inclure dans l'échantillon dans Nombre de lignes.
-
Cliquez sur Dernière requête exécutée pour voir l'heure et la durée d'exécution de la dernière requête exécutée.
Filtrage des résultats
Vous pouvez filtrer les résultats en fonction d'une ou de plusieurs colonnes.
-
Cliquez sur
sur la première colonne en fonction de laquelle appliquer le filtre, puis sur Filtrer.
Sélectionnez l'opérateur à utiliser et la valeur en fonction de laquelle appliquer le filtre.
Vous pouvez ajouter davantage de filtres de colonne en cliquant sur Ajouter un filtre.
Le filtre affectera uniquement l'échantillon de données existant.
Tri des résultats
Vous pouvez trier l'échantillon de données en fonction d'une colonne spécifique.
-
Cliquez sur
sur la colonne en fonction de laquelle appliquer le tri, puis sur Trier par ordre croissant ou Trier par ordre décroissant.
Le tri affectera uniquement l'échantillon de données existant. Si vous avez utilisé un filtre pour inclure uniquement des commandes de 2024 et si vous inversez l'ordre de tri, l'échantillon de données continuera à ne contenir que des commandes de 2024.
Gestion des colonnes affichées
Vous pouvez sélectionner les colonnes à afficher dans les résultats. La sélection n'est pas enregistrée lorsque vous enregistrez la transformation.
-
Masquez une colonne en cliquant sur
sur la colonne, puis sur Masquer colonne.
-
Gérez l'affichage de toutes les colonnes en cliquant sur
sur n'importe quelle colonne, puis sur Colonnes affichées.
Paramètres
Cliquez sur Paramètres pour modifier les paramètres de la requête SELECT. Les paramètres doivent être mappés vers les objets sources ou cibles.
Les paramètres sont automatiquement mappés lorsque vous :
-
Utilisez Générer l'instruction SELECT dans l'éditeur dans Objets.
-
Cliquez sur > pour déplacer un nom de colonne ou jeu de données vers l'éditeur.
-
Un nom de paramètre correspond à un nom de table parmi les tables dans Objets.
Vous pouvez mapper vers
-
Structures historiques de type 2 (_history)
-
Structures existantes
-
Objets cibles
Vous ne pouvez mapper que des objets cibles lorsqu'un paramètre est défini à l'intérieur d'une macro incrémentielle.
Métadonnées
Vous pouvez modifier les paramètres des métadonnées dans Métadonnées.
-
Définissez des clés primaires dans la colonne Clé.
-
Déterminez si la colonne peut être nulle dans la colonne Peut être nul.
-
Sélectionnez une colonne et cliquez sur Modifier pour définir le nom de colonne, la clé, indiquer si elle peut être nulle et définir le type de données.
Exécution de la requête
Vous pouvez exécuter la requête à tout moment pendant la phase de développement en cliquant sur Exécuter la requête. La première fois que vous exécutez une requête, les métadonnées seront récupérées. Lorsque la requête est exécutée, vous pouvez accéder à Métadonnées et définir une clé primaire, nécessaire pour que la transformation soit complète.
Utilisation de macros pour adapter la requête au type de chargement
Si l'option Chargement incrémentiel est utilisée, vous pouvez utiliser des Macros pour adapter la requête à exécuter si un chargement initial ou un chargement incrémentiel est effectué.
Sélectionnez la macro et ajoutez la requête à l'intérieur de la clause correspondante.
-
Q_RUN_INCREMENTAL ajoute une clause dans laquelle vous pouvez placer une requête exécutée uniquement en cas de chargement incrémentiel.
-
Q_RUN_INITIAL_LOAD ajoute une clause dans laquelle vous pouvez placer une requête exécutée uniquement en cas de chargement initial.
Vous n'avez pas besoin de spécifier la requête complète avec chaque macro. Vous pouvez ajuster le code ou en ajouter en fonction de votre cas d'utilisation.
Cas d'utilisation : filtre incrémentiel utilisant une plage de dates :
Dans ce cas d'utilisation, un jeu de données provenant de commandes doit être transformé via une requête SQL personnalisée. Étant donné qu'il s'agit d'un jeu de données volumineux, vous voulez inclure un filtrage incrémentiel pour vous assurer que le chargement incrémentiel tient compte uniquement des commandes des 12 dernières heures.
Voici la requête de base :
Voici le filtre à appliquer lors de l'exécution incrémentielle, où vous tenez compte uniquement des commandes ajoutées au cours des 12 dernières heures :
Voici la requête complète, qui utilise la macro de filtre et des noms de table remplacés par la notation ${TABLE} :
On obtient la requête de chargement initial :
Et la requête de chargement incrémentiel :
Cas d'utilisation : filtre incrémentiel utilisant des données dans la cible :
Dans ce cas d'utilisation, un jeu de données provenant de commandes doit être transformé via une requête SQL personnalisée. Étant donné que les commandes représentent un jeu de données volumineux, vous voulez inclure un filtrage incrémentiel pour vous assurer que le chargement incrémentiel tient compte uniquement des enregistrements des détails des commandes plus récents que les données de la table cible. Vous souhaitez également indiquer si une ligne a été traitée par le chargement initial ou un chargement incrémentiel.
Voici la requête de base :
Il s'agit du filtre à appliquer lors de l'exécution incrémentielle. “ORDERS_DERIVED” est le nom du jeu de données cible.
Voici la requête complète, qui utilise la macro de filtre et des noms de table remplacés par la notation {TABLE}. LOADED_BY est défini sur INIT si le chargement est initial et sur INCR si le chargement est incrémentiel :
On obtient la requête de chargement initial :
Et la requête de chargement incrémentiel :
Paramètres
Cliquez sur pour modifier les paramètres de la transformation SQL.
Saisissez un nom pour le jeu de données cible dans Nom.
Vous pouvez également ajouter une description plus longue dans Description.
Dans Matérialisation, sélectionnez si la sortie transformée doit être matérialisée ou non. Vous pouvez choisir d'hériter du paramètre des paramètres de la tâche de données.
-
La sélection d'Activé créera des tables et permettra de gérer le traitement ELT associé.
-
Si cette option est Désactivée, des vues effectuant des transformations à la volée seront créées.
Dans Magasin de données historiques (Type 2), indiquez si vous souhaitez conserver les données historiques. Vous pouvez choisir d'hériter du paramètre des paramètres de la tâche de données. Ce paramètre nécessite l'activation de Matérialisation.
L'option Chargement incrémentiel vous permet d'ajuster la requête pour un chargement de données incrémentiel en appliquant des filtres ou d'autres conditions afin de réduire l'ensemble des données traitées via des macros. L'option Chargement incrémentiel est disponible uniquement si les données sont matérialisées sous forme de tables.
-
Lorsque l'option Chargement incrémentiel est Activée
La première exécution de la tâche effectuera un chargement initial, insérant l'ensemble des résultats de la requête dans votre table cible. Les exécutions suivantes effectueront des chargements incrémentiels en fonction des filtres ou conditions spécifiques que vous avez définis pour le traitement incrémentiel. Lors du chargement incrémentiel, la tâche traitera uniquement les données sous forme de mise à jour ou d'insertion ; les suppressions ne sont pas supportées.
-
Lorsque l'option Chargement incrémentiel est Désactivée
La première exécution de la tâche effectuera un chargement initial, insérant l'ensemble des résultats de la requête dans votre table cible. Les exécutions suivantes traiteront l'ensemble des résultats de la requête en les comparant à votre table cible et en traitant les enregistrements nouveaux, modifiés ou supprimés.
Bonne pratique
-
Lorsque vous ajoutez une transformation SQL, une clé primaire n'est pas automatiquement définie. Ajoutez une clé au jeu de données dans l'onglet Jeu de données.
-
Ne créez pas d'en-têtes de colonne dans la sortie transformée manuellement.
-
Évitez d'utiliser SELECT avec *, car cela risque de renvoyer des colonnes différentes à chaque exécution de la requête. En cas de changement dans le schéma, modifiez la requête en conséquence et exécutez de nouveau Décrire la table. Vous pouvez ensuite modifier les colonnes et ajuster les tables.