Free Trial

Base de Connaissance

Apprenez auprès des experts.
TIPS de la semaine

Chaque semaine, découvrez de nouvelles astuces et bonnes pratiques pour devenir un expert !

Voir l'index

ACE's Insight : Créer du dynamisme dans ses requêtes

Ladarthure
14 - Magnetar
14 - Magnetar
Créé

ACE'sInsight FR-Community-BlogBanners.png

 

Créer du dynamisme dans ses requêtes ?

 

On est souvent confronté au fait d’extraire les données d’une période spécifique, les dernières semaines ou journées écoulées. Pour ce faire, on peut se dire qu’on exporte l’ensemble de la base et qu’ensuite on va filtrer pour ne récupérer qu’une partie des données. Mais quand on utilise une énorme base de données, cela peut vite tourner au casse-tête et à des temps de requêtes longs.

 

Si vous faites du SQL ou que vous « codez » vos requêtes, une méthode simple consiste à créer ce filtre dans le code de manière plus dynamique en faisant une requête imbriquée, mais cela peut paraître compliqué pour une personne ne sachant pas coder, de plus cela ajoute une couche de complexité pour l’utilisateur à la lecture du workflow, il doit bien prendre en compte le fait que cet input n’est pas juste un input mais plutôt une requête directement.

 

Il existe cependant une autre méthode.

 

On peut, via les outils in-db, créer des requêtes de manière visuelle et amener cette dynamique sans rentrer dans la difficulté du code.

 

Prenons, par exemple, l’idée d’extraire les données du dernier mois disponible dans notre base de données clients en utilisant Alteryx. J’ai dans ma base de données, un indicateur d’arrêté des informations qui contient le mois et l’année (par exemple 2021-04 pour le mois d’avril 2021).

 

Je vais pouvoir réaliser une première requête en In-Db qui va me permettre de sélectionner l’arrêté maximum disponible. Pour faire ceci, j’utilise un Input in db dans lequel je vais sélectionner la table de mes clients, puis j’utilise un summarize in-db où je vais récupérer le max du champ arrêté de l’ensemble de ma base de données.

 

step_01.png

 

Une fois que ceci est fait je vais simplement récupérer ces données localement en utilisant un data stream out.

 

step_02.png

Je peux ensuite si besoin calculer des éléments localement par rapport à la donnée récupérée (par exemple calculer la date de la semaine précédente ou encore le début du mois en cours, voir même l’année précédente si on veut les données sur 1 an glissant).

 

Une fois que ceci est fait, on peut en utilisant un outil formule recréer une requête (en format texte) comprenant les informations et surtout les conditions qui nous intéressent. Dans mon exemple, je vais écrire la requête de la façon suivante : 

« Select * from base_clients where date_arrt = ‘» + [max_date_arrt] + «’ » 

 

Cette requête est une version très simple de requête SQL, elle va me sélectionner tous les champs de ma base de données avec comme seule condition les lignes dont la date d’arrêté doit être égale au maximum de ma date d’arrêté présente dans ma base de données.

Je crée ensuite un champ que j’appelle « alias » et dans lequel je rentre l’alias que j’ai mis pour me connecter à ma base de données :

« connection_indb »

 

step_03.png

Et pour finir, il me suffit d’utiliser un outil dynamic input in db qui permet de lancer la requête précédemment saisie.

 

step_04.png

 

En résumé, cela permet de lancer une requête en mettant des paramètres spécifiques, ici un exemple de date, mais on peut imaginer des requêtes bien plus complexes. D’une manière générale, c’est une bonne pratique d’utiliser ce genre de méthode afin de réduire le volume de données souhaitées et donc d’obtenir seulement les données que l’on souhaite analyser.

 

Si vous avez des questions ou des feedbacks sur cette méthode, n’hésitez pas à m’en faire part en commentant cet article. J’y répondrai avec plaisir !

contributeurs
Étiquettes