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 à l'aide 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.
Ajouter une transformation SQL apparaît, vous permettant de fournir les paramètres de la transformation.
-
Saisissez un nom pour l'ensemble 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.
-
-
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 prises en charge.
-
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.
Note InformationsSi la requête sélectionne tous les enregistrements qui devraient exister dans la cible, désactivez Chargement incrémentiel. Les enregistrements non sélectionnés seront supprimés de la cible. -
-
Cliquez sur Ajouter lorsque vous êtes prêt à créer la transformation SQL.
Modifier la transformation SQL apparaît.
-
Saisissez la requête pour renvoyer la table basée sur SQL dans Requête SELECT.
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 effectuer une sélection parmi les Jeux de données et les Colonnes.
Vous pouvez également utiliser l'Assistant SQL pour générer une requête via l'IA générative. Pour plus d'informations, consultez Génération d'une transformation SQL via une invite textuelle.
-
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.
-
Cliquez sur Extraire les paramètres pour analyser les paramètres de la requête SELECT.
Les paramètres doivent être mappés vers les objets sources ou cibles. 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.
Note ConseilVous pouvez remplacer un paramètre par une référence pour obtenir une requête plus facile à lire. Modifiez la valeur de Paramètre et la référence dans Requête SELECT changera elle aussi. -
-
Cliquez sur Décrire la table pour obtenir un aperçu des métadonnées de sortie de la requête.
Vous pouvez également afficher un aperçu des résultats via un échantillon des données.
-
Assurez-vous que la table comporte une clé primaire.
Vous pouvez également modifier les paramètres de 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.
-
-
Une fois que vous êtes satisfait des résultats de la requête, cliquez sur OK. Le jeu de données est maintenant ajouté à la liste de cibles et vous pouvez en afficher un aperçu.
Affichage d'un aperçu des données
Vous pouvez afficher un aperçu des résultats via un échantillon des données.
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.
Pour afficher un aperçu des résultats :
-
Cliquez sur Afficher les données.
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.
Vous pouvez filtrer l'échantillon de données de deux manières différentes :
-
Utilisez pour filtrer l'échantillon de données à récupérer.
Par exemple, si vous appliquez le filtre ${OrderYear}>2023 et si Nombre de lignes est défini sur 10, vous obtiendrez un échantillon de 10 commandes en 2024.
-
Filtrez l'échantillon de données en fonction d'une colonne spécifique.
Cela affectera uniquement l'échantillon de données existant. Si vous avez utilisé pour inclure uniquement des commandes de 2024 et si vous avez défini le filtre de colonne pour afficher des commandes de 2022, vous obtiendrez un échantillon vide.
Vous pouvez trier l'échantillon de données en fonction d'une colonne spécifique. Le tri affectera uniquement l'échantillon de données existant. Si vous avez utilisé 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.
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 :
Bonnes pratiques
-
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.