X

Intelligence d’affaires sur rails avec Blazer


La Business Intelligence (BI) est un processus axé sur la technologie pour transformer les données brutes en informations exploitables qui soutiennent les décisions commerciales. Ceux-ci se présentent souvent sous la forme de rapports, de tableaux de bord et de graphiques.

De nombreuses entreprises proposent des logiciels de BI, des maisons spécialisées, telles que Tableau et Qlik, aux grandes entreprises, telles que Microsoft, IBM et Google. Bien que ceux-ci incluent un ensemble complet d’outils d’analyse, ils ont généralement un coût : complexité et prix.

Si vous travaillez sur un projet Rails et que vous appréciez la simplicité ou si vous souhaitez commencer à collecter vos premières mesures commerciales, Blazer peut être une bonne solution. Avec Blazer, vous pouvez écrire des requêtes SQL pour créer des tableaux de bord avec des métriques et des graphiques, effectuer des analyses de cohorte, envoyer des notifications et même exécuter des prévisions. Leur devise est “l’intelligence économique simplifiée”. De plus, au moment de la rédaction de cet article, il est gratuit.

Installation de Blazer

Ajouter blazer à votre Gemfile :

Exécutez les commandes suivantes :

rails generate blazer:install
rails db:migrate

Ces commandes ajouteront des configurations Blazer à config/blazer.rb et de nouvelles tables de base de données qui seront nécessaires pour exécuter Blazer et enregistrer des tableaux de bord.

Enfin, montez le tableau de bord dans config/routes.rb:

mount Blazer::Engine, at: "blazer"

N’oubliez pas que vous devez restreindre le tableau de bord aux utilisateurs authentifiés, en particulier en production.

Si vous utilisez Devise, vous pouvez le faire directement dans les routes :

authenticate :user, ->(user) { user.admin? } do
  mount Blazer::Engine, at: "blazer"
end

Blazer prend en charge plusieurs sources de données. J’utiliserai PostgreSQL pour cette démonstration.

Il y a une vue plus détaillée des configurations dans la documentation officielle.

Votre première métrique

Pour montrer comment Blazer fonctionne, j’utiliserai une application de réservation avec des données fictives. Cette application aura des tableaux, y compris l’hébergement, les invités, les réservations et les notes.

Pour la première métrique, je veux savoir combien de jours, en moyenne, les clients séjournent dans nos logements. En pratique, cela nécessite de consulter le tableau des réservations et de calculer le nombre moyen de jours entre le check-in et le check-out.

Tout d’abord. Pour créer une nouvelle métrique, je clique sur “Nouvelle requête”.

Cela ouvrira un petit éditeur où je pourrai écrire ma première requête avec SQL :


Métrique “Séjour moyen (en jours)”

Notez que par mesure de sécurité, toutes les requêtes exécutées dans Blazer sont enveloppées dans une transaction qui sera annulée à la fin.

Je suis satisfait du résultat et je trouve que la statistique est utile pour l’entreprise. Je peux donc la nommer “Séjour moyen (en jours)” et l’enregistrer. Cela sera désormais accessible aux autres utilisateurs administrateurs dans le tableau de bord principal.

Lorsque vous nommez des requêtes, sachez que Blazer prend en charge un modèle d’autorisations de base :

  • Les requêtes sans nom ne sont pas répertoriées.
  • Les requêtes dont le nom commence par # ne sont répertoriées que pour le créateur.
  • Les requêtes dont le nom commence par * ne peuvent être modifiées que par le créateur.

Au niveau de la base de données, vous pouvez également créer des utilisateurs avec des autorisations en lecture seule. Voici un exemple pour PostgreSQL :

BEGIN;
CREATE ROLE blazer LOGIN PASSWORD 'secret';
GRANT CONNECT ON DATABASE dbname TO blazer;
GRANT USAGE ON SCHEMA public TO blazer;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO blazer;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO blazer;
COMMIT;

Ajout de graphiques

Maintenant, disons que je veux avoir un aperçu visuel du nombre total d’enregistrements au fil du temps.

Blazer générera automatiquement des graphiques en fonction des types de colonnes renvoyés dans votre requête.

Par exemple, pour générer un graphique en courbes, je peux simplement écrire une requête qui renvoie un horodatage et une valeur numérique :


Graphique linéaire avec le nombre total d’enregistrements par semaine

Sur le plan commercial, je tire déjà beaucoup de valeur de ce graphique. Il y a une diminution des enregistrements de juillet à août, un comportement qui n’est pas typique pour cette période de l’année. Je peux également ajouter une ligne cible avec les enregistrements minimum que nous devrions avoir en tant qu’entreprise :


Graphique linéaire avec le nombre total d’enregistrements par semaine avec objectif

Génial, ce graphique est maintenant prêt à être partagé. Je vais l’appeler « Total d’enregistrements par semaine » et l’enregistrer.

Blazer prend en charge de nombreux autres types de graphiques, notamment les graphiques à colonnes, à nuage de points et à secteurs. Il prend également en charge les cartes.

Créer des tableaux de bord

Le « séjour moyen (en jours) » et le « nombre total d’enregistrements par semaine » se rapportent aux réservations, de sorte que ces deux analyses peuvent être regroupées dans un tableau de bord.

Pour ce faire, je vais cliquer sur l’option “Nouveau tableau de bord” sur la page principale et choisir dans la liste des graphiques, qui est pré-remplie avec tous les graphiques/indicateurs que nous avons créés jusqu’à présent.


Tableau de bord des réservations avec « Nombre moyen d’enregistrements (en jours) » et « Nombre total d’enregistrements par semaine »

Aller plus loin avec les vérifications, les cohortes et les prévisions

Chèques

Vous pouvez rechercher des anomalies ou des données manquantes dans vos données, exécuter ces vérifications périodiquement et même envoyer des notifications à votre e-mail ou à votre canal Slack.

Je veux être averti s’il y a des notes sans note. Pour ce faire, je vais d’abord créer une nouvelle requête et l’enregistrer sous “Notes sans taux”:

SELECT * FROM ratings WHERE rate IS NULL /* all ratings should have a rate */

Ensuite, j’irai dans la zone “Chèques” et créerai un nouveau chèque basé sur cette requête.


Vérifier s’il existe des notes sans note (mauvaises données)

Actuellement, cette requête ne renvoie aucun résultat. Cela signifie que la vérification est réussie, comme indiqué sur la liste de vérifications ci-dessous. Chaque fois que la requête renvoie des résultats, l’état passe à “échec” et je suis averti par e-mail.


Vérifier s’il existe des notes sans note (mauvaises données)

Cohortes

Une analyse de cohorte peut vous aider à suivre l’engagement ou la rétention au fil du temps.

Pour exécuter une analyse de cohorte sur Blazer, ajoutez le commentaire /analyse de cohorte/ à une requête. La requête doit également renvoyer les colonnes user_id, conversion_time, et éventuellement, cohort_time. Si vous ne renvoyez pas ces colonnes, la cohorte ne fonctionnera pas.


Analyser l’engagement des utilisateurs avec des cohortes

Prévisions

À ce jour, nous avons vu certaines des principales caractéristiques de Blazer. Cependant, en le combinant avec d’autres gemmes, vous pouvez le rendre encore plus puissant.

Par exemple, prophet est un bijou, construit par le même auteur, qui créera des prévisions basées sur une série de données.

Pour l’utiliser, ajoutez-le à votre Gemfile :

gem "prophet-rb", ">= 0.2.1"

Ensuite, ajoutez-le à config/blazer.yml :

Maintenant, chaque fois que vous écrivez une requête qui renvoie deux colonnes, où l’une est un horodatage et l’autre un numérique, un lien “prévision” apparaîtra.


Total des réservations hebdomadaires


Total des réservations hebdomadaires avec prévisions

Conclusion

Les décisions commerciales importantes ne doivent pas être basées sur des idées ou des opinions non validées. Les entreprises qui réussissent étayent leurs décisions par des données. Cependant, les données sont inutiles à moins que vous ne les transformiez en informations exploitables : des données que vous pouvez consommer, interpréter et intégrer dans vos domaines d’activité.

Un système d’intelligence d’affaires vous aidera à y parvenir. Si vous travaillez sur un projet Ruby et que vous souhaitez commencer à créer un système de reporting interne pour celui-ci, Blazer est un excellent point de départ. Il est simple à installer et à explorer. Il vous suffit de connaître SQL pour pouvoir configurer rapidement des tableaux de bord avec des métriques et des graphiques pouvant être lus et modifiés par des membres sélectionnés de votre équipe.

Il prend en charge plusieurs sources de données et peut également être étendu avec d’autres gemmes pour fournir des prévisions, par exemple.

Vas-y, essaies!