Skip to content

Automations

Les Automations sont des tâches diverses qui ont en commun de pouvoir être planifiées de manière régulière (e.g. toutes les nuits, toutes les heures...).

Voici une liste des usages les plus classiques des automations :

  • Envoyer un dashboard au format PDF par email
  • Agréger les données de facturation par client et stocker le résultat dans une nouvelle table du datawarehouse interne
  • Charger le cache d'un dashboard pour accélérer son affichage
  • Envoyer un email si les ventes de la journée d'un site eCommerce sont en dessous d'un seuil
  • Enchainer plusieurs Automations

Il y a trois grands types d'automations :

  • Les ETL Steps : pour prendre des données dans une source, les transformer et stocker le résultat dans une autre datasource.
  • Les Tasks : il s'agit d'une librairie d'automations pré-concues (envoyer un email, charger un cache...).
  • Les scripts Python : pour exécuter n'importe quel code Python.

Sur la page d'une automation :

  • Le premier onglet vous permet de configurer cette automation.
  • L'onglet Execution vous permet d'exécuter l'automation tout de suite ou de planifier son exécution.
  • L'onglet Webhook vous permet de configurer une URL qui si elle est appelée déclenche l'exécution de l'automation.

Les Tasks

Une Task est une automation très simple à configurer. Par exemple la tâche d'envoi de dashboard par email se configure avec le sujet de l'email, son contenu, la liste des destinataires et le dashboard à attacher en PDF.

Les tâches disponibles sont :

  • Workflow / chain scripts : pour exécuter une liste d'automations les unes après les autres.
  • Emailing / Send email with dashboard attached as PDF : pour envoyer un dashboard en PDF par email
  • Admin / Reload users meta-data : permet de charger les meta-data pour chaque login, et ainsi filtrer les données affichées dans un dashboard en fonction de l'utilisateur loggé (voir filtrage par login)
  • Cache management / Refresh dashboards cache : permet de pré-charger le cache d'une liste de dashboards.
  • Data import / Synchronize a data source into a Serenytics storage : pour copier toutes les données d'une data-source quelconque dans un storage Serenytics.
  • Predictive / Linear regression : pour stocker le résultat d'une régression linéaire sur une série temporelle.

Les ETL Steps

Un ETL Step permet de prendre des données dans une source, de les transformer et de stocker le résultat dans une table du datawarehouse interne.

Avant de configurer un ETL step, vous devez avoir préalablement créé la table qui va stocker le résultat dans le datawarehouse interne. Pour cela, il faut aller dans le menu Data et créer une data-source de type Storage (dans l'onglet Serenytics's Datawarehouse).

Les transformations que vous pouvez appliquer sont :

  • Sélectionner des colonnes ou des formules de la source d'entrée
  • Appliquer des filtres
  • Agréger les données selon des dimensions
  • Renommer les colonnes (pour cela, il faut cliquer sur les entêtes des colonnes dans la prévisualisation)

Quand vous configurez l'ETL step, le tableau qui s'affiche est une prévisualisation des données, le calcul complet n'est pas effectué. Pour lancer ce calcul, il faut utiliser l'onglet Exécution et cliquer sur Run Now (ou planifier l'exécution).

Warning

Si votre source d'entrée est un Storage du datawarehouse interne, le calcul est optimisé. Vous pouvez alors effectuer des ETL steps sur des très gros volumes de données (e.g. des centaines de millions de lignes). En raison de cette optimisation, si vous agrégez les données selon un champ date (e.g. par mois, par année), il se peut que la colonne d'agrégat dans le résultat ait un format de date différent de celui de la prévisualisation.

Warning

Si votre source d'entrée est un Storage du datawarehouse interne, il n'y a pas de limite aux nombre de lignes que vous pouvez manipuler. Pour toute autre source, la limite est de un million de lignes.

Append mode

Par défaut, l'exécution d'un ETL step écrase les données actuellement contenues dans la table de destination. Avec le append mode, le résultat de la requête définie dans l'ETL step est concaténé à la table de destination, son contenu actuel n'est pas supprimé.

Warning

La table de destination doit être déjà créée avec des colonnes (par exemple en exécutant un premier ETL step sans le append mode). Et les colonnes résultantes de l'ETL step en mode append doivent être identiques (en nom et en type) aux colonnes actuelles de la table de destination, sinon une erreur sera retournée lors de l'exécution.

Une autre méthode pour exécuter un ETL step avec le mode append est de l'exécuter depuis un script Python (voir l'exemple ci-dessous). Si dans le script vous spécifiez le paramètre append, la valeur écrasera celle définie dans l'ETL step.

import serenytics
client = serenytics.Client()
MY_SCRIPT_UUID = 'XXXXX'

script = client.get_script_by_uuid(uuid=MY_SCRIPT_UUID)

params = {
  'append': True,
}
script.run(params=params, async_=False)

Les scripts Python

Les scripts Python vous permettent d'écrire du code Python et de l'exécuter directement sur la plateforme Serenytics. L'usage principale est d'accéder aux données de vos data-sources dans le code Python et d'effectuer des actions selon ces données. Vous pouvez par exemple effectuer des calculs avancés en Python/Pandas et stocker le résultat dans une table du datawarehouse interne. Vous pouvez aussi envoyer des emails avec des données ou des alertes si des données dépassent certains seuils.

Un script Python peut être déclenché depuis un dashboard par un button (widget action). Et le script peut accéder à des champs remplis par la personne qui consulte le dashboard. Cela permet de créer des applications data en mode low-code.

Définir les datasources input et output d'un script Python

Pour un script Python, il est très important de définir ses datasources input et output dans l'onglet Utilisations. En faisant cela, d'une part, le script apparaitra correctement dans le dataflow, et d'autre part, si vous tentez de supprimer l'une de ces datasources, cela sera refusé car notre moteur saura qu'elle est utilisée par un script Python.

La documentation est disponible dans la partie développeur: Doc developpeur.

(S)FTP Import

Cette tâche vous permet d'importer un fichier CSV ou XLSX depuis un serveur FTP ou SFTP.

Voir la documentation complete ici (en anglais) : Doc S(FTP) import.

Sync a datasource in a Storage

Cette tâche vous permet de synchroniser les données d'une datasource (e.g. d'une table SQL) vers un storage (i.e. une table dans le datawarehouse interne de Serenytics).

Voir la documentation complete ici (en anglais) : Sync.

Le champ Run-as-user pour les automations

Quand une automation est exécutée, il faut décider quels credentials seront utilisés. C'est très important car si une automation est exécutée avec des credentials très large, l'automation pourra accéder à beaucoup de données.

Si l'automation est lancée depuis le Studio en cliquant sur 'Run now', l'automation utilisera les credentials de l'utilisateur en cours.

Si l'automation est exécutée automatiquement car elle est schédulée, les credentials de l'utilisateur spécifié dans le champ Run-as-user de l'automation seront utilisés. Quand un utilisateur crée une nouvelle automation, il devient le Run-as-user par défaut de cette automation. Si le champ n'est pas remplit (cela peut arriver si cet utilisateur a été supprimé), le script va utiliser les credentials du premier utilisateur admin de l'organisation.

Ce champ peut être modifié dans l'onglet Advanced de la configuration du script (seulement par un admin).

Le champ Allow all users to run this script

Dans certains cas, il est nécessaire d'autoriser tous les utilisateurs de votre organisation à exécuter un script. C'est possible seulement si vous activez cette option (par défaut, seuls les utilisateurs studio qui ont les droits sur le répertoire d'une automation peuvent l'exécuter). Cette option est nécessaire si vous ajouter un bouton dans un dashboard pour déclencher un script par un utilisateur Viewer (avec la fonction btn_run_automation).

Credentials utilisé avec l'option Allow all users to run this script

Quand cette option est activée, l'automation sera toujours exécutée avec les credentials de l'utilisateur définit dans le champ run-as-user. Si vous éditez un script Python, vous pouvez retrouver le login qui a déclenché l'automation dans le dictionnaire client.script_args, dans le champ triggered_by_user.

Mutex

Quand un mutex est configuré pour un ensemble de scripts, cela garantit qu'ils ne seront jamais exécutés en parallèle. Cette option est particulièrement utile pour des scripts qui font des lectures/écritures sur un même jeu de données, et aussi si ces scripts sont déclenchés à partir de boutons dans vos dashboards.

Quand plusieurs scripts partagent un même mutex et qu'ils sont lancés au même moment, un premier script va s'exécuter et les autres vont attendre qu'il soit terminé, ensuite, le second va démarrer et ainsi de suite.

Un moyen facile de tester cette option est de créer deux scripts Python. Le premier fait un time.sleep(10) et le second fait un print("hello world"). Quand vous exécutez les deux scripts en même temps, par défaut, le second va se terminer très rapidement. Si vous les mettez dans le même mutex, et que vous les déclenchez en même temps (en commençant par celui qui fait le sleep(10)), vous verrez que le second va démarrer après 10 secondes environ, une fois le premier script terminé.