boardz:design:result

La classe Résultat

La classe Result (Résultat) est un élément essentiel de Boardz. Elle permet de stocker des données de mesures ou d'indicateurs et de procéder à des calculs et des transformations.

les données sont accompagnées de certaines métadonnées qui indiquent la structure interne de ces données, et indiquent aux autres constituant qui manipulent ces résultats comment ils doivent les utiliser et les parcourir. Certaines sources de données ne pourront produire que certains types de structure, certains composants d'affichage ne pourront admettre que certaines structures en entrée, certains opérateurs ne sauront (ou ne pourront) pas traiter toutes les combinaisons de structures. Le fait de formaliser cette description permettra au code du Boardz d'être robuste, au regard des injonctions de “configuration” par les administrateurs de données.

Note importante : Pour tout ceux qui chercheraient une définition d'algèbre des matrices, la construction algébrique des résultats d'analyse de BoardZ n'EST PAS une algèbre mathématique des espaces de matrices, mais une algèbre “distributionnelle” d'un certain nombre de transformations sur des résultats aux dimensions multiples. Ceci est particulièrement notable dans les opérations de “multiplication”.

Attributs d'un résultat

  • data : Les données effectives.
  • aritytype : le type de structure : “scalar”, “assoc”, “matrix”, mais aussi “records”, ou “null” pour un résultat vide.
  • arity : l'arité des données (à comprendre comme le nombre de dimensions d'index qui indexent la donnée de base, 0 pour un pur scalaire, 1 pour une association, 2 pour une matrice, …)
  • aritycounts[] : Un tableau modifié dynamiquement et indiquant le nombre d'élement(max) dans chacune des dimensions.
  • dimensions[] : Il s'agit d'un tableau contenant dans l'ordre des dimensions d'indice, les unités de ces dimensions d'indice.

Algèbre des résultats

L'algèbre des résultats fournit des opérateurs algébriques et des transformations qui pourront être invoqués par écriture de formules dans les indicateurs calculés. Les opérateurs combinent un ou deux opérandes en tenant compte de leur arités respectives.

Addition

Syntaxe : %R1 + %R2

  • Null - * ou * - Null : *
  • Scalaire + Scalaire : Résultat scalaire de l'addition
  • Scalaire + Assoc : toutes les valeurs de l'association additionnée du scalaire
  • Assoc + Scalaire : toutes les valeurs de l'association additionnée du scalaire
  • Assoc + Assoc : toutes les valeurs portant la même clef additionnées. Les clefs manquantes sont considérées à valeur nulle. Les clefs résultantes sont l'union des clefs des opérandes.
  • Scalaire + matrice : extension de Scalaire + Assoc
  • matrice + Scalaire : extension de Assoc + scalaire
  • matrice + assoc : Réduction à Assoc + scalaire pour les clefs identiques de première dimension.
  • assoc + matrice : Réduction à scalaire + Assoc pour les clefs identiques de première dimension
  • matrice + matrice : Réduction à Assoc + Assoc pour les clefs identiques de première dimension. Union des clefs manquantes.

Soustraction

Syntaxe : %R1 - %R2

  • Null - * ou * - Null : *
  • Scalaire - Scalaire : Résultat scalaire de la soustraction
  • Scalaire - Assoc : toutes les valeurs de l'association soustraites du scalaire
  • Assoc - Scalaire : toutes les valeurs de l'association moins la valeur du scalaire
  • Assoc - Assoc : différence algébrique de toutes les valeurs portant la même clef. Les clefs manquantes sont considérées à valeur nulle. Les clefs résultantes sont l'union des clefs des opérandes.
  • Scalaire - matrice : extension de Scalaire - Assoc
  • matrice - Scalaire : extension de Assoc - scalaire
  • matrice - assoc : Réduction à Assoc - scalaire pour les clefs identiques de première dimension.
  • assoc - matrice : Réduction à scalaire - Assoc pour les clefs identiques de première dimension
  • matrice - matrice : Réduction à Assoc - Assoc pour les clefs identiques de première dimension. Union des clefs manquantes.

Multiplication

Syntaxe : %R1 * %R2

  • Null - * ou * - Null : Null
  • Scalaire * Scalaire : Résultat scalaire du produit
  • Scalaire * Assoc : toutes les valeurs de l'association multipliées par le scalaire
  • Assoc * Scalaire : toutes les valeurs de l'association multipliées par le scalaire
  • Assoc * Assoc : produit algébrique de toutes les valeurs portant la même clef. Les clefs résultantes sont l'intersection des clefs des opérandes.
  • Scalaire * Matrice : extension de Scalaire * Assoc
  • Matrice * Scalaire : extension de Assoc * scalaire
  • Matrice * Assoc : Réduction à Assoc * scalaire pour les clefs identiques de première dimension.
  • Assoc * Matrice : Réduction à scalaire * Assoc pour les clefs identiques de première dimension
  • Matrice * Matrice : Réduction à Assoc * Assoc pour les clefs identiques de première dimension. Intersection des clefs manquantes.

Division

Syntaxe : %R1 / %R2

  • Null - * ou * - Null : Null
  • Scalaire / Scalaire : Résultat scalaire de la division
  • Scalaire / Assoc : l'association des divisions du scalaire par les valeurs de l'association
  • Assoc / Scalaire : toutes les valeurs de l'association moins la valeur du scalaire
  • Assoc / Assoc : division algébrique de toutes les valeurs portant la même clef. Les celfs résultantes sont l'intersection des clefs des deux résultats.
  • Scalaire / Matrice : extension de Scalaire / Assoc
  • Matrice / Scalaire : extension de Assoc / scalaire
  • Matrice / Assoc : Réduction à Assoc / scalaire pour les clefs identiques de première dimension.
  • Assoc / Matrice : Réduction à scalaire / Assoc pour les clefs identiques de première dimension
  • Matrice / Matrice : Réduction à Assoc / Assoc pour les clefs identiques de première dimension. Union des clefs manquantes.

Maximum (opérateur binaire)

Syntaxe : op1 M op2

Cet opérateur calcule le maximum (ou les maximums locaux) entre deux résultats.

  • Scalaire M Scalaire : Renvoie le maximum scalaire des deux valeurs
  • Scalaire M Assoc : Renvoie l'association avec application du maximum scalaire sur chaque valeur
  • Assoc M Scalaire : Renvoie l'association avec application du maximum scalaire sur chaque valeur
  • Assoc M Assoc : Renvoie les maximums “clef à clef”. Les clefs manquantes sont remplies avec la valeur disponible
  • Matrice M Matrice : Maximums locaux comme extension du cas précédent
  • Matrice M Assoc : Réduction à Assoc / scalaire pour les clefs identiques de première dimension.
  • Assoc M Matrice : Réduction à scalaire / Assoc pour les clefs identiques de première dimension

Minimum (opérateur binaire)

Syntaxe : op1 m op2

Cet opérateur calcule le minimum (ou les minimums locaux) entre deux résultats.

  • Scalaire m Scalaire : Renvoie le minimum scalaire des deux valeurs
  • Scalaire m Assoc : Renvoie l'association avec application du minimum scalaire sur chaque valeur
  • Assoc m Scalaire : Renvoie l'association avec application du minimum scalaire sur chaque valeur
  • Assoc m Assoc : Renvoie les minimums “clef à clef”. Les clefs manquantes sont remplies avec la valeur disponible
  • Matrice m Matrice : Minimums locaux comme extension du cas précédent
  • Matrice m Assoc : Réduction à Assoc / scalaire pour les clefs identiques de première dimension.
  • Assoc m Matrice : Réduction à scalaire / Assoc pour les clefs identiques de première dimension

Filtrage

Syntaxe : op1 ^ op2 Conditions :

  • op1 et op2 ne peuvent être scalaires (ni l'un ni l'autre)
  • Les dimensions de op2 doivent être incluses (dans le même ordre) dans les dimensions de op1.
  • Si l'arité des deux opérandes est identique, alors seules les clefs de op2 sont considérées pour l'opération.
  • Si op2 est d'arité plus grande que op1, alors les sous-dimensions supplémentaires de op2 sont ignorées.

Cet opérateur filtre le premier opérande sur la base des clefs disponibles dans le second opérante. Le filtrage s'effectue par arité descendante.

Opérations unaires

Ces opérateurs peuvent avoir un effet sur l'arité et le type de structure. Ils peuvent éventuellement réduire l'arité initiale

Maximum unaire

Le maximum unaire calcule le maximum global de la structure sur la dimension la plus profonde, et réduit la structure à l'arité inférieure d'une unité. Une matrice d'arité deux devient une association et une association devient un scalaire.

Syntaxe : MAX(op1)

  • Scalaire : renvoie la même valeur
  • Assoc : renvoie le scalaire maximum des valeurs de l'association
  • Matrice : renvoie la structure d'arité inférieure, la dimension inférieure réduite au maximum local

Exemple sur les matrices :

soit une matrice d'arité 3 :

  [catégorie de cours][cours][utilisateur] => valeur

L'exécution de MAX sur la matrice donnera la matrice indexée sur

 [Catégorie de cours][cours] => MAX(valeur(utilisateur))

Minimum unaire

Comme pour le maximum unaire mais avec le minimum local.

Moyenne unaire

Comme pour le maximum unaire mais avec la moyenne.

Cardinalité

L'opérateur de cardinalité extrait la cardinalité de la dernière dimension disponible dans la structure.

Syntaxe : CARD(op1)

  • Scalaire : donne le scalaire 1
  • Association : donne un scalaire donnant le nombre d'éléments de l'association
  • Matrice : donne une matrice de rang inférieur (une association pour la matrice d'arité 2) donnant les nombres d'éléments de la dernière dimension originale.

Exemple :

soit une matrice d'arité 3 :

  [Catégorie de cours][cours][utilisateur] => valeur

de dimensions :

  [coursecatid, courseid, userid, unknown]

L'exécution de MAX sur la matrice donnera la matrice indexée sur

 [Catégorie de cours][cours] => COUNT(utilisateur)

de dimensions :

  [coursecatid, courseid, unknown]

Compression temporelle

boardz/design/result.txt · Dernière modification: 2020/04/07 11:07 (modification externe)