Notes de version
Cette page présente les évolutions fonctionnelles et corrections d’anomalies.
Pour plus d’informations sur la migration technique, merci de vous reporter à la page notes techniques de version et guide de migration.
Version 8.7.1
GenericsData
Améliorations
Formules
-
Ajout de formules
[type].list.remove
et[type].list.remove_extend
dans les types Chaine de caractères (str), Décimal (dec), Entier (int), Grand Entier (bigint) et Date (date) pour supprimer, respectivement, un ou plusieurs éléments d’une liste. Leur liste complète accompagnée de leurs descriptions et d’exemples est disponible ici.. -
Ajout de formules
[type].list.replace
et[type].list.replace_extend
dans les types Chaine de caractères (str), Décimal (dec), Entier (int), Grand Entier (bigint) et Date (date) pour remplacer, respectivement, un ou plusieurs éléments d’une liste. Leur liste complète accompagnée de leurs descriptions et d’exemples est disponible ici. -
Ajout de la formule str.list.merge_by_index permettant de merger plusieurs listes de type Chaine de caractères en une unique liste de type Chaine de caractères. Sa description accompagnée d’exemples est disponible ici.
-
De nouvelles formules retournant des dates spécifiques ont été ajoutées à la liste des fonctions :
date_time.day_of_week
,date_time.day_of_month
,date_time.day_of_year
,date_time.week_of_month
,date_time.week_of_year
,date_time.month_of_year
,date_time.year_of_week_of_years
,date_time.week_of_week_of_years
. Leur description est disponible ici. -
Ajout de la possibilité de comparer des listes de type différent avec les fonctions de comparaison telles que bigint.list.intersect.
Correctifs
Entités
-
Correction de la gestion des permissions d’accès au code des Entités Métier, attribuées aux utilisateurs via leur appartenance à un groupe.
Projets
-
Certains projets ne pouvaient plus être importés et dupliqués à cause de colonnes dupliquées dans un ou plusieurs Datablocks. Un correctif a été appliqué pour améliorer la gestion des colonnes dupliquées et permettre une importation et une duplication fluides de tous les projets.
Diverses corrections mineures de formules, du remapping dans les DataBlocks, de la gestion des colonnes disponibles en sortie des étapes des DataBlocks, du comportement de l’interface de gestion des formules et de l’analyse d’impact des suppressions de caractéristiques dans les entités.
Version 8.7.0
GenericsData
Améliorations
Performance
Les performances d’exécution de nombreuses tâches dans les entités et les DataBlocks ont été améliorées pour une navigation plus fluide et une meilleure expérience utilisateur.
DataBlocks
Propagation des libellés : Une fonctionnalité de propagation du renommage des libellés des colonnes a été ajoutée au gestionnaire des colonnes disponibles en sortie des étapes des Datablocks.
Elle permet de s’assurer de l’attribution du libellé d’une colonne de l’étape courante à toutes ses occurrences dans les étapes et leurs opérations suivantes.
Formules
Formules arithmétiques : la formule dec.operator
est dépréciée et remplacée par plusieurs formules arithmétiques et statistiques plus faciles à trouver et dont le détail est disponible ici.
Correctifs
Formules
-
Règles des formules ".if": Correction d’un problème de mise à jour du libellé des colonnes utilisées dans les conditions de la Règle d’une formule de type ".if" en cas de modification de ce libellé dans une étape précédente
-
Autres Formules : 21 formules ont été mises à jour et leurs anciennes versions, dépréciées (les formules dépréciées dans cette version sont identifiables par la mention Dépréciée depuis la version : 8.7.0 dans le catalogue complet des formules DataChain). Correction de la fonction dc.null, qui, utilisée dans certaines formules, provoquait un échec d’exécution du DataBlock.
Diverses autres corrections mineures.
Entités
-
Caractéristiques virtuelles : la possibilité de créer des boucles entre caractéristiques virtuelles qui s’utilisent l’une l’autre dans les entités a été corrigée. Une erreur de résultat d’une caractéristique virtuelle str.if qui en utilisait une autre (sans boucle) dans sa Règle a également été résolue.
-
Caractéristiques de type décimal : correction du mapping de type formule : désormais, seuls les types décimaux sont proposés dans les formules de type décimal.
HandleData
Améliorations
Tester une Publication API
Il est désormais possible de tester une API en tant que DataProducteur en simulant la requête
-
pour un utilisateur spécifique, entré comme consommateur dans un ou plusieurs accès
-
pour un ou plusieurs groupes entrés en tant que consommateurs
-
pour un accès spécifique ou un ensemble d’accès
Cette fonction permet de voir les colonnes et les données attendues en fonction des paramètres du test en cours.
Version 8.6.0
Documentation des fonctions
La documentation des fonctions unitaires utilisées pour la création des formules est désormais automatisée et a été entièrement mise à jour.
GenericsData
Améliorations
Connecteurs
-
Chaîne de connexion libre : ajout d’un mode d’édition libre qui permet de préciser une chaîne de connexion pour les connecteurs de type base de données
HandleData
Améliorations
Tableaux de bord
Plusieurs évolutions et améliorations ont été apportées aux Tableaux de bord et aux Publications de tableaux de bord.
-
Multi-page : une nouvelle option permet de définir plusieurs pages (onglets) pour un même Tableau de bord.
-
Dates relatives : une nouvelle option permet de calculer automatiquement la plage des dates disponibles sur les filtres de type date. Pour cela, vous devez préciser l’incrément temporel et un intervalle (en jours, mois ou autres unités de temps).
Par exemple, un incrément et un intervalle de 15 jours permettra aux consommateurs de filtrer les données sur les 15 jours suivant la date de la publication ou de la mise à jour de la publication. -
Modèle de mail : un système de modèles de mails géré depuis les paramètres du Projet permet de configurer le titre et le corps du message et d’intégrer des variables dynamiques afin d’automatiser l’envoi des mails à la suite d’actions réalisées sur les Tableaux de Bord. Seuls les gestionnaires du Projet peuvent paramétrer les modèles d’email.
-
Zone de centrage : l’affichage des zones de centrage entre les modes visualisation et paramétrage a été harmonisé. Les libellés sont désormais positionnés au-dessus des zones et la présentation des intervalles de dates a été élargie pour une meilleure lisibilité.
Visualisations
-
Police et couleurs : le composant de choix de la couleur (gestion de la transparence) et de police a été amélioré
-
Infobulles sur les types Date et Nombre : une option permet de définir le format d’affichage des infobulles pour les valeurs de type
Date
etNombre
(séparation des milliers, chiffres après la virgule) -
Valeurs numériques dans les tableaux : une option permet de définir le format d’affichage des valeurs numériques affichées dans les tableaux
-
Amélioration de la gestion des images : une option permet désormais de masquer le titre d’une image
Publication d’API
La fonctionnalité des Expositions APIs qui permet de publier une API de données pour un DataBlock évolue pour devenir un élément DataChain à part entière ce qui en facilitera la gestion.
Cette évolution permet de créer et de suivre la mise à jour des Publications API depuis le de HandleData.
Les APIs peuvent désormais être partagées à des utilisateurs consommateurs qui ne travaillent pas dans le Projet.
Les consommateurs doivent avoir accès au module de consommation de données (future MarketPlace DataChain) pour pouvoir consommer les APIs.
Pour profiter de la nouvelle fonctionnalité des Expositions API, l’utilisateur (ou le groupe du Projet dont il est membre) doit posséder certaines permissions Globales sur la fonction Exposition API et Droits Élémentaires sur le DataBlock source. Si besoin, mettez à jour le Projet avec ces nouveaux droits. |
- Permissions globales et Droit sur élément liés à la fonctionnalité
-
-
Permissions globales (portées par l’utilisateur ou le groupe présent dans le Projet)
-
"Exposition API" : pour voir et modifier des Expositions API HandleData
-
"Exposition API - Création" : pour créer et migrer de nouvelles Expositions
-
-
Droit sur la source des données (DataBlock)
-
Modification
-
-
Pour migrer des APIs existantes vers la nouvelle version, référez-vous au Guide de migration des Expositions.
Pour en savoir plus sur la nouvelle version des Expositions API consultez la page Gestion des API de données depuis HandleData.
Version 8.5.6
Correctifs & améliorations
-
Optimisation de l’exécution des traitements sur chaines en caractère lors de comparaison insensible à la casse.
-
Les dépôts de type csv et excel peuvent désormais comporter des caractères "." dans les entêtes.
-
Les libellés de caractéristiques d’entités peuvent désormais comporter 200 caractères
Version 8.5.4
Correctifs & améliorations
-
Les formules "geo.st_polygon_from_envelope", "geo.st_point" et "geo.st_intersect" génèrent une erreur à l’exécution.
-
Il est désormais possible d’exposer une colonne de type liste (cela générait précédemment une erreur).
-
Problème de perte de filtre lors de l’enregistrement d’un DataBlock dupliqué.
Version 8.5.3
Correctifs & améliorations
-
Il est désormais possible de demander l’annulation d’un job à l’état inconnu "UNKNOWN".
-
Le header "Content-type" des réponses API d’exposition n’était plus application/json. C’est de nouveau le cas.
-
Le nom d’utilisateur/mot de passe de l’authentification basique sur le connecteur HTTP n’étaient pas exportés/importés.
-
Lors d’une première tentative d’exposition en erreur, une exposition pouvait "disparaître" et générait un problème lors de l’import du projet concerné.
-
Amélioration des performances du calcul d’impact lors de la modification d’un DataBlock.
Version 8.5.2
Amélioration de la lisibilité des formules
Le gestionnaire de formule bénéficie désormais d’une lisibilité accrue.
-
Les noms de formule sont indiqué en gras,
-
Une couleur est affectée aux parenthèses,
-
En mode édition, le contenu de la règle s’affiche désormais en bas à droite de la fenêtre d’édition.
Standardisation des formules "type.list.create"
Comme la plupart des formules prenant des listes en paramètres, les formules bigint.list.create, date.list.create, dec.list.create, int.list.create et str.list.create prennent désormais un argument de type ARGS, qui permet d’avoir plus de deux paramètres.
Les anciennes formules ont été dépréciées.
Version 8.5.1
Correctifs & améliorations
-
Correction d’une anomalie dans le Dépôt HTTP avec pagination, lorsque l’URL ne contient qu’un paramètre
-
Mise à jour driver Oracle
-
Lors de la demande d’activation/désactivation d’exposition, aucune erreur n’est désormais remontée si l’exposition n’a encore jamais été exposée
Version 8.5.0
Amélioration de la gestion des Dépôts de type fichier "par label"
Pour certains types de fichiers, il est possible de référencer les colonnes du fichier via l’entête de colonne (label) plutôt que le numéro de colonne. Ce référencement facilite l’intégration de fichiers hétérogènes, contenant des noms d’entêtes identiques.
Par exemple, pour un Dépôt contenant sur les fichiers suivants :
-
Fichier1 : deux colonnes d’entête : nom et prenom,
-
Fichier2 : trois colonnes d’entête : prenom, nom, age
-
Fichier3 : trois colonnes d’entête : date de naissance, nom, prenom
La définition d’un Dépôt par label basé sur les entêtes "nom", "prenom", "age" permettra d’utiliser et d’aligner les colonnes nom et prénom, et les lignes de la colonne age seront valorisées avec les données Fichier2, les lignes issues des Fichier1 et Fichier3 étant valorisés à null.
Cette fonctionnalité s’applique aux Dépôts de type csv, excel et parquet.
Ajout d’un code racine au projet
Nous avons ajouté un code racine dans les paramètres du projet.
Ce code doit être unique au niveau de la Plateforme Datachain.
Ce code est intégré dans l’URL des Expositions du projet, permettant ainsi à des Expositions issues de Projets différents d’avoir le même point d’accès ("nom") dans l’URL.
Par exemple,
-
pour une exposition EXPO, l' url de exposition est http://nomdeserver/service/data/EXPO.
-
dans le projet 8.5, on ajoute le code racine RACINE_PROJET.
L’url d’exposition devient http://nomdeserver/service/data/RACINE_PROJET/EXPO
Deux projets pourront à terme partager le nom d’exposition EXPO.
En version 8.5.0, la cohabitation n’est pas encore possible : en effet, afin de garantir une retro-compatibilité pour les consommateurs de l’api d’exposition, l’api répond sous les deux urls, avec et sans racine, pour laisser le temps aux consommateurs de modifier leurs URL d’appels. Cette retro-compatibilité sera supprimée dans la prochaine version du produit.
Ajout de nouvelles formules :
-
dec.power(Arg1, Arg2) : Renvoi la valeur de l’argument Arg1 puissance Arg2 avec Arg1 et Arg2 des valeurs numériques (int, bigint)
-
str.list.except(ListArg1, ListArg2) et ses déclinaisons pour les autres types (int.list.except(ListArg1,ListArg2), dec.list.except(ListArg1,ListArg2), date.list.except(ListArg1,ListArg2), bigint.list.except(ListArg1,ListArg2) renvoi une liste : Renvoi les valeurs d’une liste qui ne sont pas dans une deuxième liste
-
Exemple : str.list.except(["b", "a", "c"],["c", "d", "a", "f"]) Renvoi ["b"]
-
-
str.list.position(ListAgr1, Valeur) : Renvoi la position dans la liste de la valeur de l’argument 2. Renvoi 0 si l’argument 2 est absent (renvoie 0 aussi quand l’index est 0) et ses déclinaisons pour les autres types (int.list.position(ListArg1,Valeur), dec.list.position(ListArg1,Valeur), bigint.list.position(ListArg1,Valeur), date.list.position(ListArg1,Valeur))
-
Arg1 est une liste,
-
Arg2 est une valeur
-
La position n’est pas basée sur zéro, mais sur un index basé sur 1.
-
Renvoie 0 si la valeur donnée est introuvable dans le tableau.
-
-
str.list.insert(ListArg1, Position, Valeur) ajoute un élément dans la liste précisée dans l’argument 1 et ses déclinations suivant le type : int.list.insert (ListArg1, Position, Valeur) , dec.list.insert(ListArg1, Position, Valeur), bigint.list.insert(ListArg1,Arg2,Arg3) et date.list.insert(ListArg1,Arg2,Arg3) :
-
ListArg1 : Liste à traiter str.list.insert(ListArg1,Position,Valeur)
-
Arg2 : position: Nb Entier
-
Arg3 : Valeur à insérer dans la liste
-
-
str.list.compact(ListArg1) Supprime les valeurs null d’une liste et ses déclinations suivant le type int.list.compact(ListAgr1), dec.list.compact(ListAgr1), bigint.list.compact(ListAgr1), date.list.compact(ListAgr1)
-
str.if(Règle, StringSiTrue, StringSiFalse) en remplacement de str.if(String1, Opérateur, String2 , StringSiTrue, StringSiFalse), et ses déclinaisons en fonctions du type int.if, dec.if, bigint.if, date.if.
-
Les anciennes formules sont désormais dépréciées
-
La formule dc.rules est dépréciée au profit de str.if, le comportement de ces deux formules étant strictement identique
-
Correctifs & améliorations
-
Amélioration significative des performances des opérations de fill-forward.
-
Intégration de l’identifiant du projet dans les URL d’éléments, afin de faciliter la création de favoris dans le navigateur.
-
Ajout de la permission de créer des Projets Publics, afin de limiter la création de ce type de Projet. Dans une future version, la notion de projet public sera désactivée.
-
Amélioration de l’affichage des 'Règles' dans les formules. Dans les éléments en lecture seule, la règle affiche désormais son contenu pour plus de lisibilité.
-
Correction d’un problème de suppression lié à la suppression d’une colonne dans l’initialisation des elements handleData.
-
Dans les tableaux de Datablock et d’entité Métier, ajout d’une colonne, masqués par défaut, permettant de visualiser directement la date et heure de la dernière persistance d’un Datablock.
-
Un administrateur ne peut désormais plus modifier le mot de passe d’un utilisateur, mais seulement le réinitialiser.
-
Correction d’un bogue suite à un remapping lié à une agrégation dans un Datablock.
-
Le nom de la source d’un élément HandleData est désormais maintenu lors de la modification du nom du Datablock.
Version 8.4.1
Gestion des Projets Orphelins
L’administrateur peut désormais choisir à qui affecter un projet orphelin.
Correctifs & améliorations
-
Correction d’une anomalie empêchant l’utilisation de certaines formules, uniquement lorsque l’application est déployée sur un cluster Spark
-
Lors de la publication d’une exposition au status de brouillon, l’utilisateur à l’origine de cette exposition n’était pas mis à jour dans la table d’historique des expositions.
Version 8.4.0
Export de DataBlock
Vous pouvez définir un chemin et nom de fichier dynamiquement à partir d’un mini-langage afin de créer des patterns d’écriture lors de l’export d’un DataBlock.
Cette option est aussi disponible pour les modèles d’export.
Éléments inactifs
Les éléments inactifs ne sont désormais plus visibles dans les listes des éléments disponibles pour être consommés dans un autre élément.
Les éléments consommés ne peuvent plus être désactivés.
Formules Utilisées dans le projet
Afin de visualiser les formules utilisées dans le projet, notamment lorsqu’une formule amenée à disparaître doit être remplacée par une autre, un page est désormais disponible, permettant de visualiser toutes les formules utilisées dans le projet en cours.
Cette page est disponible dans le menu "Divers → Utilisations des formules".
Gestion des dates
Il est désormais possible de paramétrer au niveau du déploiement spark, une variable d’instance permettant de positionner le fuseau horaire lors des aggregations sur des dates.
Paramétrage SMTP
Le paramétrage d’envoi de mail (SMTP) peut désormais être fait lors du déploiement via le fichier de configuration et n’est plus dans ce cas modifiable via l’interface.
Correctifs & améliorations
-
Exposition : les valeurs "null" sont désormais retournées lors d’un appel à la page d’exposition (précédemment, les valeurs "null" n’étaient pas renvoyées).
-
Formules et classement : le libellé de la formule est désormais visible dans la popup de définition de règle.
-
Zone de centrage : Les éléments sont désormais correctement alignés dans les interfaces de visualisation
-
DataBlock : correction d’une anomalie de valorisation des colonnes
Version 8.3.2
Fonctions unitaires
De nouvelles fonctions sont disponibles pour effectuer des traitements sur les données des DataBlocks et des sources de données des éléments de visualisations de HandleData.
Elles remplaceront les anciennes fonctions similaires lors de la prochaine version majeure (9.0).
Les nouvelles fonctions sur les constantes de type dates disponibles doivent être utilisées à la place des fonctions dépréciées.
Version 8.3.0
Evolutions dans la gestion des dates
Une évolution globale de la gestion des Dates (TimeStamp) a été réalisée.
Elle entraîne différentes modifications dans les interfaces et les fonctionnalités de GenericsData et HandleData.
L’ensemble des informations sur la manipulation des Dates dans DataChain est disponible dans le menu Opérations sur les données Dates.
Affichage des données de type Date (TimeStamp)
Afin de simplifier la lecture et la manipulation des Dates sur toute la chaîne de valeurs, elles sont désormais affichées par défaut au format ISO 8601 simplifié.
Le fuseau horaire dépend des paramètres de votre instance DataChain (UTC par défaut), contactez un administrateur DataChain en cas de doute.
Au survol, les Dates s’affichent toujours au format ISO 8601 complet et en UTC, peu importe le masque d’affichage appliqué.
-
ISO simplifié en UTC : 2023-09-01 13:42:24
-
ISO complet en UTC : 2032-09-01T13:42:24:000Z
En savoir plus sur l’affichage des données.
Masques, fuseaux horaires et langues
Les Masques utilisés pour la lecture, l’écriture ou l’affichage des Dates peuvent être modifiés et personnalisés.
Le masque d’affichage utilisé par défaut pour les Dates peut être modifié si besoin, à différents niveaux de la Chaîne de valeurs :
-
en sortie d’étape de DataBlock
-
dans les sources des visualisations de HandleData
Lors de l’ajout ou du paramétrage du Mapping d’une Entité Métier, ou lors d’une conversion vers le type Date en sortie d’étape d’un DataBlock, il est possible de définir un fuseau horaire et une langue en plus du masque de lecture.
Fonctions unitaires
2 nouvelles fonctions sont disponibles pour effectuer des traitements sur les données des DataBlocks et des sources de données des éléments de visualisations de HandleData et remplaceront 2 anciennes fonctions similaires lors de la prochaine version majeure (9.0).
Nouvelles fonctions
-
date.to_strz transforme une Date en Chaîne de caractères à partir d’un masque d’écriture, d’un fuseau et d’une langue
-
str.to_datez transforme une Chaîne de caractères en Date à partir d’un masque de lecture, d’un fuseau et d’une langue
Version 8.2.0
Evolutions
Modèles d’exports
Il est désormais possible de paramétrer des Modèles d’export réutilisables pour l’ensemble des Connecteurs disponibles dans DataChain (Local, Base de Données, Serveur distant).
Vous devez posséder la permission globale liée aux Modèles d’export pour pouvoir créer et utiliser des Modèles.
Par défaut cette nouvelle permission globale est inactive pour tous les groupes et les utilisateurs. Les Administrateurs DataChain peuvent modifier les permissions dans les pages de gestion des groupes et des utilisateurs. |
-
Utiliser un Modèle lors d’un export
Les Modèles d’export peuvent être chargés pour remplir automatiquement le formulaire d’export. -
Créer un Modèle
La gestion des Modèles est disponible depuis le menu "Divers".
Exports
L’interface d’export de DataBlock a été mis à jour suite à l’ajout des Modèles d’export.
De nouvelles options sont désormais disponibles.
Expositions
Ajout de variables sur les filtres : Il est désormais possible de limiter l’accès à l’exposition des données pour des utilisateurs ou des groupes à partir de nouvelles variables de filtres.
Formules
De nouvelles formules sont disponibles pour connaître la position d’un élément dans une liste.
[type].list.position(ListArg1, Arg2) : renvoie la position de la valeur *Arg2* contenue dans ListArg1
L’index est basé sur 1 La formule renvoie -1 si la valeur donnée est introuvable dans la liste |
Variantes de la formule
-
str.list.position(ListStrArg1, ListStrArg2) : recherche de valeur de type chaîne de caractères
Exemple : str.list.position(["moly","peter","marsh","carl"], "marsh")
renvoi 3 -
int.list.position(ListIntListArg1, IntArg2) : recherche de valeur de nombre entier
-
dec.list.position(ListDecListArg1, DecArg2) : recherche de valeur de type décimal
-
bigint.list.position(ListBigIntArg1, BigIntArg2) : recherche de valeur de type grand nombre entier
-
date.list.position(DateListArg1,DateArg2) : recherche de valeur de type date
Version 8.1.0
Evolutions
-
Spécification de l’encodage des fichiers JSON, XML et CSV : il est désormais possible de préciser, au niveau des dépôts de type S3 MinIo, l’encodage des fichiers Json et xml.
-
Authentification sur le connecteur HTTP : ajout de paramétrage d’une authentification dans les dépôts de type HTTP
-
Changement de l’algorithme de hachage : l’algorithme de hachage utilisé dans la formule str.encrypt est sha256. Les versions précédentes utilisaient l’algorithme MD5.
-
Serveur d’authentification : passage à la version 21.1 de Keycloak.
-
Connecteur Power BI : Un connecteur DataChain est désormais disponible en option dans PowerBI. Il permet de consommer directement les Datablocks de DataChain exposés depuis l’interface de PowerBI.
-
Documentation La documentation Datachain est désormais disponible en ligne à l’adresse : https://docs.adobisdc.fr. Les liens dans les applications utilisent ce nouveau site. Cette nouvelle documentation nous permet de mettre à disposition un module de recherche documentaire, ainsi qu’une première version en anglais (tous les modules ne sont pas encore traduits et le seront ultérieurement).
Autres changements
-
Correction d’une anomalie de lecture des fichiers basés sur les connecteurs S3/MinIo.
-
La lecture des très gros fichiers Excel a été optimisée. Il ne devrait plus y avoir de limite.
-
Diverses corrections et améliorations
-
Gestion du motif dans les dépôts S3
-
Optimisation des websockets des jobs pour les requêtes portant sur de gros volumes
-
Sécurité : Activation de l’authentification PKCE https://ordina-jworks.github.io/security/2019/08/22/Securing-Web-Applications-With-Keycloak.html
-
Augmentation de la sécurité des mots de passe
-
Correction d’un dysfonctionnement lors de la suppression des formules dans les étapes des Datablocks
-
Version 8.0.0
Evolutions
La version 8 apporte un certain nombre de nouveautés, permettant notamment d’améliorer de manière significative les performances de l’application.
Modification de l’architecture de déploiement
De manière standard, l’architecture 7.0 est la suivante :
Un composant Redis est désormais intégré dans la stack Datachain, permettant d’assurer une communication asynchrone entre le composant backend et le composant spark.
Intégration du mode FAIR Spark
Dans une application Spark donnée (instance SparkContext), plusieurs tâches parallèles peuvent s’exécuter simultanément si elles ont été soumises à partir de threads distincts. Par "tâche", dans cette section, nous entendons une action Spark (par exemple, enregistrer, collecter) et toutes les tâches qui doivent être exécutées pour évaluer cette action. Le planificateur de Spark est entièrement thread-safe et prend en charge le cas d’utilisation qui correspond au fait de permettre aux applications de répondre à plusieurs requêtes (par exemple, des requêtes pour plusieurs utilisateurs).
Par défaut, le planificateur de Spark exécute les tâches en mode FIFO (cas de Datachain V7). Chaque tâche est divisée en « étapes » (par exemple, cartographier et réduire les phases), et la première tâche est prioritaire sur toutes les ressources disponibles tant que ses étapes ont des tâches à lancer, puis la deuxième tâche est prioritaire, etc. Si les tâches en tête de la file d’attente n’ont pas besoin d’utiliser tout le cluster, les travaux ultérieurs peuvent commencer à s’exécuter immédiatement, mais si les travaux en tête de file d’attente sont volumineux, les travaux ultérieurs peuvent être considérablement retardés.
Il est désormais possible de configurer un partage équitable entre les tâches dans la nouvelle version de Datachain, en activant le mode FAIR de spark. Dans le cadre d’un partage équitable, Spark attribue des tâches entre les travaux « à tour de rôle », de sorte que tous les travaux obtiennent une part à peu près égale des ressources du cluster. Cela signifie que les tâches courtes soumises pendant l’exécution d’une tâche longue peuvent commencer à recevoir des ressources immédiatement et obtenir toujours de bons temps de réponse, sans attendre la fin de la tâche longue. C’est ce mode qui est désormais activé par défaut dans Datachain.
Le mode de traitement des tâches est désormais le suivant :

Un job est soumis au backend, qui va le déposer dans une file d’attente Redis. Il est pris en charge par un contexte Spark, qui notifie au fur et à mesure de l’avancement du traitement (pris en charge, en traitement, en erreur, terminé, etc.). Redis, le système de gestion de file d’attente utilisé est aussi utilisé pour stocker les résultats d’exécution de job. Enfin, un système d’événement est aussi mis en place pour assurer la communication entre plusieurs backends déployés.
Les impacts sur la configuration et le déploiement sont les suivants (ne sont repris que les nouveaux éléments de configuration) : dans le fichier de déploiement docker-compose : Ajout du service Redis
dc_redis_cache:
image: redis:7.0-alpine
command: redis-server --loglevel warning
networks:
dc_network:
aliases:
- dc-redis
deploy:
mode: replicated
replicas: 1
placement:
constraints:
AJOUTER LES CONTRAINTES DE DÉPLOIEMENT (à déployer avec l’image backend)
Dans la configuration backend (fichier backend.env), nouveau paramètre dc.app.notification.urls de valeur habituelle : redis://dc-redis:6379. Suppression des paramètres : dc.app.api.spark (remplacé par dc.app.context.url coté spark)
JAVA_OPTIONS=-Xms1024M -Xmx4g -Duser.home=/opt/dev/work
## Désormais inutile
## dc.app.api.spark=http://dc-spark1-1:8090,http://dc-spark1-2:8090,
## Simplifié ci-dessous
## dc.app.api.spark.security.user.name=backend,backend,backend,backend,backend,backend,backend,backend,backend
dc.app.api.spark.security.user.name=backend
## Simplifié ci-dessous
## dc.app.api.spark.security.user.password=aaaa,aaaa
dc.app.api.spark.security.user.password=aaaa
## Désormais inutile
## dc.api.spark.shared-file-system=true
## nouveau
# Configuration Redis
dc.app.notification.urls=redis://dc-redis:6379
Dans la configuration spark (fichier spark.env) :
-
nouveau paramètre (identique au backend)
dc.app.notification.urls de valeur habituelle : redis://dc-redis:6379 -
nouveaux paramètres (pour plus d’information, voir documentation Datachain en ligne)
dc.app.job.manager.spark.thread.number=5 et dc.app.job.manager.other.thread.number=5 -
nouveaux paramètres (pour plus d’information, voir documentation Datachain en ligne)
dc.app.job.manager.spark.thread.number=5 et dc.app.job.manager.other.thread.number=5 -
nouveau paramètre : dc.app.context.url=http://dc-spark1:8090
-
suppression des paramètres (plus d’appels http de spark vers le backend)
dc.app.api.backend, spring.security.user.name, spring.security.user.password
## Désormais inutile
## dc.app.api.backend=http://dc-backend:8089
# Configuration du contexte Spark
dc.app.context.id=0
## NOUVEAU PARAMÈTRE
dc.app.context.name=context_0
## NOUVEAU PARAMÈTRE
dc.app.context.url=http://dc-spark1:8090
dc.app.spark.app-name=context1_1
# Configuration spark
## NOUVEAU PARAMÈTRE
dc.app.spark.scheduler.mode=FAIR
## NOUVEAU PARAMÈTRE
dc.app.job.manager.spark.thread.number=5
## NOUVEAU PARAMÈTRE
dc.app.job.manager.other.thread.number=3
## DEVENU INUTILE
# dc.keycloak.auth-server-url=http://dc-keycloak:8080/auth
## NOUVEAU PARAMÈTRE
# Configuration notifications
dc.app.notification.urls=redis://dc-redis:6379
Sécurité
Des adaptations de sécurité ont été faites au niveau de l’application, parmi lesquelles :
-
certaines URLS pouvaient encore porter des tokens, ce n’est désormais plus le cas
-
les services backend et spark pouvaient être lancés en tant que root. Ce n’est désormais plus nativement le cas : les serveurs sont désormais déployés avec un utilisateur dc d’uid 38330 et un groupe Datachain avec un GID 38330. Attention, les droits sur les répertoires doivent être modifiés sur les arborescences HDFS (dans le cas d’un déploiement local ou cluster hadoop), pour donner les accès nécessaires à cet utilisateur qui n’a plus les privilèges root.
Autres évolutions
Tableaux de bord - HandleData
Zones de centrage
Lors du paramétrage d’une zone de centrage de type Date, il est désormais possible de paramétrer le type de date qui doit être utilisée lors de la saisie des valeurs.
Deux formats sont disponibles : date simple ou date avec heure
Paramétrage de la présence d’un Scroll.
Paramétrage de la présence d’un Scroll vertical ou horizontal pour chaque élément présent dans un Dashboard.
Publication de Dashboard
Il est désormais possible de supprimer une publication expirée.
Dans les versions précédentes, il existait une impossibilité de suppression d’un Dashboard si ce dernier contenait une publication expirée.
Désormais, afin de supprimer un Dashboard contenant une publication expirée, il faut, au préalable, supprimer à partir de l’onglet Publication du tableau de bord, la totalité des publications expirées ou archivées.
HandleData et Generics Data
*Gestion des formules *
Une meilleure prise en compte des valeurs de type null lors du traitement de certaines formules a été effectuée.
Les formules impactées sont en particulier les formules str.if, int.if, dec.if, bigint.if, str.compare.
Gestion des agrégations
Dans les versions précédentes, lors de la création d’une agrégation, la solution générait automatiquement un tri dans l’ordre des colonnes positionnées dans le regroupement.
Depuis la version DataChain 8.0, ce comportement n’existe plus.
Si besoin, l’utilisateur peut paramétrer ou non le tri qu’il souhaite.
Version 7.6.0
Evolutions
Suppression d’un Projet d’une Instance DataChain : il est désormais possible de supprimer totalement un Projet d’une instance DataChain.
La suppression d’un Projet se réalise depuis la carte d’un Projet.
Seuls les Administrateurs d’un Projet peuvent le supprimer.
Une connexion internet est nécessaire pour valider l’action de suppression d’un Projet.
Un mail contenant un Token de validation est envoyé sur l’adresse mail de la personne réalisant la suppression.
Un Projet consommé par un autre Projet ne peut pas être supprimé.
À noter que la suppression d’un Projet est définitive. Il est conseillé de réaliser un export du Projet avant de réaliser sa suppression. |
- La suppression d’un Projet consiste en la suppression de tous les éléments d’un Projet à savoir
-
-
Publications
-
Tableaux de bord
-
La totalité des Visualisations (Média, Tableaux, Graphiques, TimeLine, Carte)
-
Sources des Visualisations
-
Datablocks et Expositions API des Datablocks (EndPoint et cache)
-
Entités Métier
-
Dépôts et les Extractions
-
Connecteurs
-
Fichiers contenus dans les Dépôts locaux
-
Toutes les persistances des Entités Métier et des Datablocks
-
Les classements créés dans le Projet à supprimer
-
Ajout d’un Connecteur Neo4j : Un nouveau Connecteur Neo4J a été ajouté (base de données de type graphe).
Ajout d’un Dépôt de type Neo4j : Un nouveau Dépôt permettant la saisie d’une requête Cypher basée sur un Connecteur Neo4J a été ajouté.
Dépôts / Téléchargement : Il est désormais possible de télécharger les fichiers contenus dans les Dépôts locaux.
Explorateur de fichiers : Un explorateur de fichier a été ajouté permettant d’explorer le contenu distant. Cet explorateur est disponible pour les Connecteurs HDFS, MinIO, S3 et SFTP.
La fonction "explorer" est disponible au niveau des fonctions Connecteurs, Dépôts et lors du paramétrage des Exports. Cette fonction permet de visualiser les fichiers distants. Pour les fonctions Dépôts et Export, l’explorateur permet de choisir le chemin cible. Seuls les répertoires peuvent être choisis.
Suppression des Publications de Tableaux de bords : Il est désormais possible de supprimer une ou plusieurs Publications d’un Tableau de bord.
Un Tableau de bord ne peut pas être supprimé tant qu’il contient des Publications actives et/ou archivées. Pour réaliser la suppression d’un Tableau de bord, il est nécessaire de supprimer l’ensemble des Publications liées. |
Pour supprimer les Publications, accéder en édition au Tableau de bord puis utiliser l’onglet Publications.
Plusieurs cas sont traités lors de la suppression d’une Publication, à savoir :
-
La Publication est active mais n’a jamais été consultée : dans ce cas, suite à sa confirmation, la suppression est définitive et immédiate.
-
La Publication est active et a déjà été consultée : Dans ce cas, suite à la confirmation, la Publication change de statut et devient une Publication archivée.
Ajout d’un parser URI pour les Dépôts sur Connecteur HTTP/HTTPS : Ajout d’un parser de l’URI, permettant une saisie plus structurée des paramètres de l’URI. Cette fonction n’est disponible que pour les Dépôts sur Connecteur de type Http/Https.
Mise à jour version AngularJs et intégration de la stack Angular : Depuis la version 7.6 et en vue des migrations futures de certains écrans ou nouvelles évolutions, la stack Angular a été intégrée.
Version 7.5.4
Correctifs
-
Amélioration de la prise en charge des fichiers accentués sur le Connecteur SFTP
-
Corrections de la gestion de l’encodage sur les flux du Connecteur HTTP (détection et prise en charge)
-
Autorisation d’utiliser les mêmes endpoints pour les Expositions lors de l’import d’un Projet
-
Utilisation de la langue du navigateur dans les Publications
-
Amélioration de la prise en charge des fichiers excel
Version 7.5.0
Evolutions
Duplication de Projet : Un Projet peut désormais être dupliqué au sein de la même instance de DataChain.
Export/Import de Projet : Un Projet peut être exporté d’une instance DataChain, pour ensuite être importé dans une autre instance. Cet import/export peut porter sur tout ou partie des éléments du Projet. Traçabilité des exports de Projet : Un nouvel écran permet de visualiser les traces des exports de Projet de l’instance. Cet écran est accessible depuis GenericsData.
À partir du menu gauche, cliquer sur “Traçabilité Exports”.
Depuis l’écran, deux onglets sont disponibles
* Éléments : Suivi des exports DataBlocks
* Projets : Suivi des exports de Projet
** Depuis chaque ligne de trace, il est possible de télécharger à nouveau le fichier généré à la date de l’action d’export.
Correctifs
-
Gestion des droits par lot pour les membres d’un Projet de type Groupe depuis l’écran d’administration
-
Correction d’un problème d’affichage des critères cibles de jointure à l’édition d’une jointure depuis les étapes d’un DataBlock
-
Divers correctifs mineurs ou améliorations concernant les nouvelles fonctions Duplication de Projet et Export/Import de Projet
Version 7.4.1
Evolutions
Datablock : Amélioration de la fonction Export CSV : De nouveaux paramètres sont disponibles pour la réalisation des exports de type CSV.
Correctifs et améliorations
-
Au niveau de la sortie d’étape des Datablocks, amélioration de la fonction remplacement des nulls par une valeur pour les colonnes de type décimal. La prise en charge des valeurs NaN est désormais traitée comme les valeurs null
-
Statistiques sur colonnes de type Date. Suite à la migration Spark 3, une erreur lors de la réalisation des statistiques des colonnes de type Date a été prise en charge
-
Amélioration de la page Accueil d’un Projet. Ajout d’un filtre sur la colonne type d’action
-
Correction d’un problème bloquant empêchant de modifier un mot de passe de Dépôt, suite à la mise en place de la clé de chiffrement complémentaire
Version 7.4.0
Evolutions
- Migration Spark 2.4. vers Spark 3.03
-
-
Intégration Spark 3 : DataChain intègre désormais le moteur Spark 3 (version 3.0.3) en lieu et place de Spark 2.4.
Pour plus d’informations sur les évolutions et modifications liées à la version de Spark 3, voir ici : https://Spark.apache.org/docs/3.0.3/sql-migration-guide.html
-
Des gains de performances ont été observés sur notre plateforme en mode mono-nœud ou en mode cluster. Toutes les images utilisent désormais la version 11 de Java.
-
Cluster Spark 3 : Nous mettons à disposition un cluster Spark 3 et un cluster hadoop, basés sur le même modèle que les images qui ont été précédemment proposées (images “bde2020” hadoop et Spark).
Un nouveau repository est disponible sur notre registry harbor (avec une clé dédiée, afin de mettre ces images à disposition).
Le repository est “ado-spark-hadoop” et les images sont en version 1.0.0
b9kd47jn.gra7.container-registry.ovh.net/ado-spark-hadoop/master-spark-3.0.3-hadoop-3.2:1.0.0 b9kd47jn.gra7.container-registry.ovh.net/ado-spark-hadoop/worker-spark-3.0.3-hadoop-3.2:1.0.0 b9kd47jn.gra7.container-registry.ovh.net/ado-spark-hadoop/namenode-hadoop-3.3.2:1.0.0 b9kd47jn.gra7.container-registry.ovh.net/ado-spark-hadoop/datanode-hadoop-3.3.2:1.0.0
Ces images remplacent les images utilisées précédemment
bde2020/spark-master:2.4.5-hadoop2.7 bde2020/spark-worker:2.4.5-hadoop2.7 bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8 bde2020/hadoop-datanode:2.0.0-hadoop2.7.4-java8
Gestion des Valeurs NaN (Not a Number) : la gestion des valeurs NaN est désormais prise en charge pour les colonnes de type décimal
-
QueryBuilder (Gestionnaire de règles et de filtres) : Au niveau du QueryBuilder, un nouvel opérateur permet de filtrer (ou de conserver) les valeurs NaN.
-
Gestionnaire de formules : Une nouvelle formule est disponible pour transformer les valeurs NaN en valeurs "Null".
Nom de la formule : dec.nan_to_null(Argument 1) Description : Transforme les valeurs NaN en null Argument 1 : Colonne de type Décimale
-
DataBlock : Sortie d’étape : La fonction de remplacement des valeurs Null a été étendue.
Cette fonction prend désormais en compte les valeurs de type NaN au même titre que les valeurs Null.
Les statistiques de colonnes prennent en charge les valeurs de type NaN
Version 7.3.2
Evolutions
Correction de sécurité suite à un audit
-
Gestion des cookies : L’application DataChain ne génère désormais plus de cookie. Seuls les cookies KeyCloak perdurent, car ils sont inhérents au produit lui-même.
Afin de positionner ces cookies à Secure, il faut que la configuration du royaume soit positionnée à Require SSL : all request (modification à effectuer dans le royaume dc-realm, onglet login).
Les cookies de session ne peuvent être marqués comme http_only, pour des raisons de fonctionnalité du produit Keycloak (voir ici https://lists.jboss.org/pipermail/keycloak-user/2017-September/011882.html et https://issues.redhat.com/browse/KEYCLOAK-12880) -
Externalisation du mot de passe de base de données : Le mot de passe des bases de données peut être surchargé via des variables d’environnement du Docker compose de DataChain.
Pour toutes les images postgresql, la clé est POSTGRES_PASSWORD.
L’image PG_MIGRATION devra avoir les variables d’environnement qui conviennent pour fonctionner lors des dumps
PG_PASSWORD, PG_KC_PASSWORD et PG_EXPOSE_PASSWORD
-
Renforcement du chiffrement des mots de passe dans la base de données :
Les mots de passe sont, jusqu’à ce jour, chiffrés en base de données. La clé de chiffrement est cependant unique pour tous les environnements. Il est désormais possible de surcharger la clé de chiffrement existante (nouveau paramètre applicatif (16 caractères obligatoirement) à déclarer pour l’image backend et l’image Spark de l’application : dc.app.backend.cipher.key). Ce paramètre est concaténé avec la clé de chiffrement interne de l’application.
Attention, en cas de mise en œuvre de ce paramètre, les mots de passe précédemment configurés devront être modifiés via l’interface de l’application, afin de pouvoir être utilisables par l’application. Ce paramètre devrait donc être mis en œuvre lors de la première installation, puis non modifié par la suite.
Script de détection de non-concordance de type des Datablocks en anomalie suite au passage 7.3.0
Ce script analyse l’ensemble des unions et jointures présentes dans les étapes des DataBlocks d’une instance DataChain. L’analyse met en évidence les incohérences de type entre les colonnes sources et cibles des critères de jointure et/ou d’union. Un rapport indique les DataBlocks dont au moins un couple de colonne est en incohérence. Les DataBlocks concernés devront faire l’objet d’un re-mapping pour les colonnes concernées.
L’exécution du script se fait via la commande suivante sur le serveur ou se trouve l’instance DataChain
Docker run -v /tmp:/scripts_outputs -it --network nom_du_reseau_DataChain -e PG_HOST=dc-pg --entrypoint bash dc/pg_migration:7.3.2 utils.sh detectUnionsJoinsImpact.groovy
Les éléments en gras sont à adapter à l’InstanceDataChain nom_du_reseau_DataChain : se trouve dans le fichier Docker compose de DataChain (ex : dc_network) dc/pg_migration:7.3.2 : nom de l’image Docker à utiliser, à préfixer par le repository Docker utilisé /tmp : nom du répertoire dans lequel sera déposé le fichier rapport, après exécution du script.
Il est possible que le réseau actuel de Docker ne supporte pas l’exécution d’un conteneur externe (l’exécution génère une erreur indiquant l’impossibilité de se connecter au réseau). Dans ce cas, éditer le fichier Docker-compose.yml et trouver la description des réseaux en fin de fichier et le réseau de DataChain