Dashboard Configuration: Raw data (litteral) rendering: Difference between revisions

From MoodleDocs
m (clean up, typos fixed: paramters → parameters, correponding → corresponding, criterias → criteria, dispalyed → displayed, full → ful (2), disticnt → distinct)
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Dashboard Block|Back to index]]
Raw litteral output uses direct data from query output and display those data in textual tables.
Raw litteral output uses direct data from query output and display those data in textual tables.


Line 23: Line 25:
===Output fields display name===
===Output fields display name===


Aliased token are seldom friendly names for end-users. The texfield for column names allows to convert column identities to friendly names in effective display. Just separate dispalyed names by semi-column (;) and enter same number of names for each declaed column, in same order.
Aliased token are seldom friendly names for end-users. The texfield for column names allows to convert column identities to friendly names in effective display. Just separate displayed names by semi-column (;) and enter same number of names for each declaed column, in same order.


With previous example, we could have setup:
With previous example, we could have setup:
Line 32: Line 34:
===Output fields format===
===Output fields format===


Formatter les données exactement dans l'expression de la requête SQL n'est pas toujours commode. Cette liste permet d'effectuer un post-formattage des données, basé sur la fonction sprintf(). Il est par exemple possible de reformatter des données numériques en utilisant les codes de format de cette fonction :
Formatting data directly in the SQL syntax may not be friendly for SQL readability. This setting defines some post-formatting filters you can apply on data, based on the sprintf() syntax. Using formatting codes of sprintf makes data reformatting easy, f.e. for numeric output:


     %s : chaine de caractères
     %s : string
     %d : entier (arrondi)
     %d : integer (floored)
     %03d : entier complété par des 0 sur 3 chiffres (001, 002, etc.)
     %03d : integer with 3 digits, 0-filled (001, 002, etc.)
     %.2f : décimal à deux chiffres après la virgule
     %.2f : 2 digit decimals
     etc. (on se référera à la documentation de la fonction sprintf en PHP).
     etc. (check the PHP sprintf documentation for the complete formatting syntax).


Taille de pagination
==Result Page Size==


Ce paramètre permet de fixer une limite de pagination pour les rendus en table linéaire.
This setting sets up a page limitation for linear tables as output.


Désactiver la sécurité : Cette case à cocher désactive un dispositif de sécurité qui agit lorsque le cours contenant le tableau de bord est en mode édition. En effet, si une requête est mal configurée, il est possible que l'exécution de la requête provoque une erreur majeure et ne permette plus l'accès à la configuration du tableau de bord. La sécurité d'édition force l'utilisation de données en cache lorsque le cours est en mode édition pour préserver l'accessibilité à la configuration de la requête.
===Override Big Results security===
Activation du cache de résultats


Lorsque le cache de résultats est activé, le tableau de bord utilise les données en cache s'il en dispose. Sinon, la requête est effectivement présentée à la base de données et ses résultats sont mis en cache pour la prochaine consultation.
This checkbox disables for this block instance the "Big Result" security setting (global configuration) that forces data paging for big results. This is useful for graphed output displaying a lot of data.


TTL du cache : Le TTL (Time To Live), ou durée d'expiration du cache de résultats peut être exprimé en minutes. Le cache n'est fonctionnel que s'il est activé ET qu'une durée d'expiration non nulle est définie.
==Query caching==


Note : L'activation du cache de résultat est obligatoire pour activer les exports en fichiers.
===Enabling query cache===
Nettoyer la table (rendu en table linéaire uniquement)


Si cette option est activée, les cellules de données identiques ne sont pas répétées, allégeant l'affichage.
When query cache is enabled, the Dashboard Block saves in a cache the query results and willuse this data during the TTL.
Table triable (rendu en table linéaire uniquement)
 
===TTL (Time to live)===
 
TTL is setup in minutes. Caching is effective when enabled AND a TTL is set higher than 0.
 
Note : Outputting results in files will require the cache is enabled.
 
==Data Cleanup (linear table output only)==
 
If data cleaning is enabled, cells containing same value than a superior cell will remain undisplayed, for better viewing confort.
 
==Sortable Table (linear table only)==
 
If table is set to sortable, column names will enable sorting links.
 
==Sub-totals==
 
If some summarizers are setup (See "summarizers"), than subtotals on the specified summarizers can be obtained on value change of a given column. Having the subtotals shown in output assumes also that table '''is sorted using the subtotal''' driving column.
 
==Output Dynamic Filters==
 
This important setting chapter tells how to configure dynamic filter the end user will use to select what part of the resuting dataset will be displayed.
 
Filters are criteria definitions that will add "selectors" (select lists) above the output redenring. A filter usually is matching a single column of the initial query. All distinct values in this column fromthe original result are used as filtering set.
 
Example :
 
Let's take q query:
 
  SELECT
  firstname as fn,
  lastname as ln,
  city as ct
 
  ....
 
and users living in PARIS, SANTA CLARA (CA) and PRAGUE.
 
If a filter "city as ct" is mentionned as filter, a select will be added to the display choosing in the set: "*,PARIS,SANTA CLARA,PRAGUE". '*' stands for "unfiltered". Choosing any value at display time will only keep corresponding data.
 
Filtering will generate additional SQL WHERE clauses that need to be explicitely located in the initial query:
 
You will use a <%%FILTERS%%> placeholder for this:
 
  SELECT
  firstname as fn,
  lastname as ln,
  city as ct
  FROM
  mdl_user
  <%%FILTERS%%>
 
Filters stakeholder will in this case add the whole WHERE clause. In case your query already has WHERE statements, the flters stakeholder will only add additional filtering tests:
 
  SELECT
  firstname as fn,
  lastname as ln,
  city as ct
  FROM
  mdl_user
  WHERE
  country = 'AU'
  <%%FILTERS%%>


si la table est triable, les noms de colonnes deviennent des clefs de tri. Ils deviennent des liens cliquables qui activent le tri de la table selon le critère sélectionné.
The above sample prefilters users from Australia, than adds what is required by filters.
Colonne de séparation de sous-totaux


Si des sommateurs sont déclarés (voir rubrique "sommateurs"), alors il est possible de produire des sous-totaux de ces sommateurs pilotés par le changement de valeur dans la colonne mentionnée. Pour que ces sous-totaux apparaissent, il sera également nécessaire que la clef de tri activée soit cette colonne.
What follows is NOT a valid lcoation:
Filtrage des données


Ce chapitre important permet d'obtenir qu'une requête puisse présenter une certaine interactivité à l'exploitation des résultats.
  SELECT
  data1,data2
  FROM
  table1 t1,
  table2 t2
  GROUP BY
  data2
  <%%FILTERS%%>
  ORDER BY
  data1


Les filtres définissent des critères qui permettent d'ajouter au tableau de bord des "sélecteurs" (listes déroulantes) de filtrage éliminant des données non désirées. Un filtre désigne en général une colonne dont l'ensemble des valeurs distinctes deviennent les "modalités de filtrage".
As a WHERE clause cannot be run after a GROUP BY.  


Exemple :
===Filters===


Soit une requête :
Filter will be defined as a semi-column (;) separated list of SQL columns definitions.


SELECT
Filter definition needs the entire SQL field clause including alias. Thus in above example the correct expressionis "city as ct" and not "city" or "ct".
firstname as fn,
lastname as ln,
city as ville


....
===Filter names===


et des utilisateurs répartis entre 3 villes PARIS, LYON et MARSEILLE.
Right as for output columns, filter criteria will have comprehensive labels for display.


Définir la colonne "city as ville" comme filtre ajoutera une liste de filtrage dont les modalités seront "*,PARIS,LYON,MARSEILLE". Il sera donc possible de filtrer la sortie suivant l'une ou l'autre de ces modalités.
You may enter a semi-column (;) separated list of labels for naming each filter, in same order and amount than the filter definition list.
Filtres


Ce champ accepte une liste à point-virgules (;) de définition de colonnes qui constituent les filtres.
Note : There is no provision for escaping litteral ";". Thus no semi-column should be used in names or labels...


    Le filtre doit être défini par la "clause SQL de définition de colonne" entière, à savoir avec son expression aliasée. (Ainsi dans l'exemple précédent on écrira comme nom de filtre "city as ville" et non "city" ou "ville" tout seul).
===Filter Defaults===


Labels des filtres
Filter add some clauses in final WHERE statement. Without any default value, filtering is disabled when Dashboard element is show for the first time in the browsing session. This setting allows to force chossing a value for filtering by default. Possible choice is:


Pour une meilleure compréhension de l'usager des rapports, il est possible de redéfinir quel est le nom visible du filtre sur l'interface.
*FIRST: Chooses first filtering value found in filtering set
*LAST: Chooses last filtering value found in filtering set
*<empty>: No default value, using '*'.


Ce champ de texte permet de donner une liste à point-virgule (;) des labels associés à chaque filtre, dans le même ordre et nombre que la définition des filtres.
All defaults will be set as a semi-column(;) separated list,in same order and amount than filter declarations.


Note : Il n'est pas prévu d'échappement pour un caractère littéral ";". Ce caractère n'est donc pas utilisable ni dans les labels, ni dans les noms affichés de colonnes.
Example :
Défaut pour les filtres


Les filtres ajoutent des clauses de restriction à la requête. Sans valeur par défaut, les clauses de filtrage sont inopérantes lorsque le tableau de bord est affiché pour la première fois dans la même session. Ce réglage permet de palier à ce défaut et permet d'activer une modalité du filtre particulière dès le premier accès au tableau de bord. Les modalités possibles sont :
Filter : department as dpt;city as ct
Filter defaults: ;FIRST


    FIRST : Restreint la plage de données à la première modalité du filtre
In this example, the default for department is '*'(unfiltered)
    LAST : Restreint la plage de données à la dernière modalité du filtre
    <vide> : Aucune restriction par défaut pour ce filtre.


Les défauts doivent être définis comme une liste à point-virgule (;) égale en ordre et en nombre à la liste déclarée de filtres.
===Filter Options===


Exemple :
Some options can drastically change the behaviour of the filter or affect several Dashboard Elements on a same page layout. This options are "single-letter markers" that can appear in any order:


Filtres : department as dpt;city as ville
*g : Enables global filtering. If other filter from other Dashboard Elements are using the same column definition on the page, than changing a filter value in one Dashboard will attempt to affect all other identical global filters.
Default pour les filtres : ;FIRST
*s : Force "Single" : When present, this will avoid to provide the "*" (unfiltered) option in fitler value set, and will force to choose a filtering value as default. This is useful for "Big Size Results" that would not be worth trying to display in fill range. If no explicit setting for "Filter défaut" has been specified, then FIRST is forced.
*m : Allow "Multiple" : When present, this markr will allow choosing multiple valuesin filter value set, thus allowing to define ranges, or subsets. Filter select turns to multiple selection widget.
*x : "Crossover" : Usually, filtering data adds additional clauses that may need complex query cleanup and processing. In some cases, those cleanup operations may fail to produce syntax safe query, (when using with unions, subqueries, multiple nested clauses ORDER BY, etc.). This marker will disable these cleanup operations, that may in certain cases, save some situations.


Dans cet exemple, la valeur par défaut du filtre département est laissée vide.
===Using multiple filters===
Options pour les filtres
Des options pour les filtres peuvent changer de manière importante la réaction du tableau de bord ou d'une association de tableaux de bord sur la même page. Ces options sont des "marqueurs" alphabétiques et peuvent s'associer dans n'importe quel ordre :


    g : Filtre gobal. Si d'autres filtres sont définis avec les mêmes identifiants de colonnes dans d'autres instances de tableaux de bord sur la même page, alors les choix de modalité de l'ensemble de ces filtres globaux sont identiques. (Cela permet de filtrer de la même manière différents résultats associés sur la même page).
Beware : when using two or more filters, each of them provides its modality list independently. Thus some filtering combination could result in possible "no values" ar all.
    s : "Single" : Ce commutateur, s'il est présent interdit la sélection de la modalité "*" (pas de filtrage), et impose donc que le filtre soit calé sur l'une de ses modalités. Cela est utile lorsque la quantité de résultats produits par la requête du tableau de bord est très importante et pourrait poser des problèmes de performances générales du site. Si aucune valeur explicite de "défaut" n' été définie pour ce filtre, la valeur implicite FIRST est utilisée dans ce cas.
    m : "Multiple" : Ce commutateur, s'il est actif, autorise la sélection de plusieurs modalités du filtre pour réaliser des intervalles ou une association de plages. Le filtre se transforme en liste à sélection multiple.
    x : "Crossover" : Habituellement, la construction interne d'un filtre effectue des traitements complexes de nettoyage de la requête pour trouver les modalités d'un filtre. Ces traitements peuvent échouer dans certains cas, si la requête a une expression complexe par elle-même (union, requêtes imbriquées, multiples clauses ORDER BY imbriquées, etc.). Ce commutateur désactive ces traitements, ce qui peut dans certains cas de figure favorables, rétablir un fonctionnement correct de la pré-requête du filtre.


Type de tables
==Table type==


Ce sélecteur choisit entre trois types de rendus de données brutes :
Raw data may be displayed using several table layout, depending on data organisation:


    Rendu linéraire : Les données sont affichées comme une table simple, avec les colonnes de sortie en horizontal, et les enregistrements trouvés en vertical.
*'''Linear display:''' Data are displayed as a simple table, each record as a line, developping output fields as cells.


Sortie en table linéaire
[[Image:lineartablesample.jpg]]


(Requête origine pour l'exemple)
(Original query for the sample)


    Rendu tabulé (tables croisées) : Les données sont présentées sous forme de tableaux croisés dynamiques à deux dimension. La configuration de ce mode nécessite des paramètres supplémentaires.
*'''Tabular crosstable:''' Data is layout in 2 dimensions as a matrix crosstable. Some extra parameters are needed to control this output mode.


Sortie de donnée tabulaire
[[Image:matrixsample.jpg]]


    Rendu hiérarchique : Ce mode de rendu demande quelques contraintes sur la requête. Pour pouvoir utiliser ce mode de rendu, les données extraites de la base de données doivent présenter une structure hiérarchique induite. Une structure hiérarchique doit présenter :
*'''Tree-shaped display:''' This mode is dependaing on some contraint on query itself. To use this mode, extracted data must have a hierarchical underlying organisation. Such an organisation would provide:
        Un principe de parenté (un enregistrement est "fils" d'un autre de niveau hiérarchique supérieur)
**A principle of filiation (a record has a parent mapped by an id)
        Un indicateur (ou une combinaison d'indicateurs) disponible pour chaque noeud de l'arbre.
**A node identity (a node can be identified by a value as node name)
**A node value (or serie of value) for each node in the tree.


Visualisation hiérarchique
[[Image:hierarchicsample.jpg]]


Ce mode d'affichage nécessite des paramètres supplémentaires.
This mode needs additional parameters to be set.

Latest revision as of 15:47, 19 May 2022

Back to index

Raw litteral output uses direct data from query output and display those data in textual tables.

Depending on configuration settings, several display modes are possible. Some modes will need additional settings provided in accessory form sections.

Common settings for row data output

Choosing columns as data output

The first absolute choice to execute is selecting which colun from query are to be displayed in table. Often the raw data will only display a part of the effective resulting dataset. You will select column in order by writing here a semi-column separated list of aliases. Of course aliases names should be present in the query!

example :

Say we enter such a query:

  SELECT
  firstname as fn,
  lastname as ln,
  username as login
  ...

Following names could figure in the column selection textfield: ln;fn;login

Output fields display name

Aliased token are seldom friendly names for end-users. The texfield for column names allows to convert column identities to friendly names in effective display. Just separate displayed names by semi-column (;) and enter same number of names for each declaed column, in same order.

With previous example, we could have setup:

Output fields : fn;ln;login Output field names : Firstname;Lastname;UserID

Output fields format

Formatting data directly in the SQL syntax may not be friendly for SQL readability. This setting defines some post-formatting filters you can apply on data, based on the sprintf() syntax. Using formatting codes of sprintf makes data reformatting easy, f.e. for numeric output:

   %s : string
   %d : integer (floored)
   %03d : integer with 3 digits, 0-filled (001, 002, etc.)
   %.2f : 2 digit decimals
   etc. (check the PHP sprintf documentation for the complete formatting syntax).

Result Page Size

This setting sets up a page limitation for linear tables as output.

Override Big Results security

This checkbox disables for this block instance the "Big Result" security setting (global configuration) that forces data paging for big results. This is useful for graphed output displaying a lot of data.

Query caching

Enabling query cache

When query cache is enabled, the Dashboard Block saves in a cache the query results and willuse this data during the TTL.

TTL (Time to live)

TTL is setup in minutes. Caching is effective when enabled AND a TTL is set higher than 0.

Note : Outputting results in files will require the cache is enabled.

Data Cleanup (linear table output only)

If data cleaning is enabled, cells containing same value than a superior cell will remain undisplayed, for better viewing confort.

Sortable Table (linear table only)

If table is set to sortable, column names will enable sorting links.

Sub-totals

If some summarizers are setup (See "summarizers"), than subtotals on the specified summarizers can be obtained on value change of a given column. Having the subtotals shown in output assumes also that table is sorted using the subtotal driving column.

Output Dynamic Filters

This important setting chapter tells how to configure dynamic filter the end user will use to select what part of the resuting dataset will be displayed.

Filters are criteria definitions that will add "selectors" (select lists) above the output redenring. A filter usually is matching a single column of the initial query. All distinct values in this column fromthe original result are used as filtering set.

Example :

Let's take q query:

  SELECT
  firstname as fn,
  lastname as ln,
  city as ct
  ....

and users living in PARIS, SANTA CLARA (CA) and PRAGUE.

If a filter "city as ct" is mentionned as filter, a select will be added to the display choosing in the set: "*,PARIS,SANTA CLARA,PRAGUE". '*' stands for "unfiltered". Choosing any value at display time will only keep corresponding data.

Filtering will generate additional SQL WHERE clauses that need to be explicitely located in the initial query:

You will use a <%%FILTERS%%> placeholder for this:

  SELECT
  firstname as fn,
  lastname as ln,
  city as ct
  FROM
  mdl_user
  <%%FILTERS%%>

Filters stakeholder will in this case add the whole WHERE clause. In case your query already has WHERE statements, the flters stakeholder will only add additional filtering tests:

  SELECT
  firstname as fn,
  lastname as ln,
  city as ct
  FROM
  mdl_user
  WHERE
  country = 'AU'
  <%%FILTERS%%>

The above sample prefilters users from Australia, than adds what is required by filters.

What follows is NOT a valid lcoation:

  SELECT 
  data1,data2
  FROM
  table1 t1,
  table2 t2
  GROUP BY
  data2
  <%%FILTERS%%>
  ORDER BY
  data1

As a WHERE clause cannot be run after a GROUP BY.

Filters

Filter will be defined as a semi-column (;) separated list of SQL columns definitions.

Filter definition needs the entire SQL field clause including alias. Thus in above example the correct expressionis "city as ct" and not "city" or "ct".

Filter names

Right as for output columns, filter criteria will have comprehensive labels for display.

You may enter a semi-column (;) separated list of labels for naming each filter, in same order and amount than the filter definition list.

Note : There is no provision for escaping litteral ";". Thus no semi-column should be used in names or labels...

Filter Defaults

Filter add some clauses in final WHERE statement. Without any default value, filtering is disabled when Dashboard element is show for the first time in the browsing session. This setting allows to force chossing a value for filtering by default. Possible choice is:

  • FIRST: Chooses first filtering value found in filtering set
  • LAST: Chooses last filtering value found in filtering set
  • <empty>: No default value, using '*'.

All defaults will be set as a semi-column(;) separated list,in same order and amount than filter declarations.

Example :

Filter : department as dpt;city as ct Filter defaults: ;FIRST

In this example, the default for department is '*'(unfiltered)

Filter Options

Some options can drastically change the behaviour of the filter or affect several Dashboard Elements on a same page layout. This options are "single-letter markers" that can appear in any order:

  • g : Enables global filtering. If other filter from other Dashboard Elements are using the same column definition on the page, than changing a filter value in one Dashboard will attempt to affect all other identical global filters.
  • s : Force "Single" : When present, this will avoid to provide the "*" (unfiltered) option in fitler value set, and will force to choose a filtering value as default. This is useful for "Big Size Results" that would not be worth trying to display in fill range. If no explicit setting for "Filter défaut" has been specified, then FIRST is forced.
  • m : Allow "Multiple" : When present, this markr will allow choosing multiple valuesin filter value set, thus allowing to define ranges, or subsets. Filter select turns to multiple selection widget.
  • x : "Crossover" : Usually, filtering data adds additional clauses that may need complex query cleanup and processing. In some cases, those cleanup operations may fail to produce syntax safe query, (when using with unions, subqueries, multiple nested clauses ORDER BY, etc.). This marker will disable these cleanup operations, that may in certain cases, save some situations.

Using multiple filters

Beware : when using two or more filters, each of them provides its modality list independently. Thus some filtering combination could result in possible "no values" ar all.

Table type

Raw data may be displayed using several table layout, depending on data organisation:

  • Linear display: Data are displayed as a simple table, each record as a line, developping output fields as cells.

File:lineartablesample.jpg

(Original query for the sample)

  • Tabular crosstable: Data is layout in 2 dimensions as a matrix crosstable. Some extra parameters are needed to control this output mode.

File:matrixsample.jpg

  • Tree-shaped display: This mode is dependaing on some contraint on query itself. To use this mode, extracted data must have a hierarchical underlying organisation. Such an organisation would provide:
    • A principle of filiation (a record has a parent mapped by an id)
    • A node identity (a node can be identified by a value as node name)
    • A node value (or serie of value) for each node in the tree.

File:hierarchicsample.jpg

This mode needs additional parameters to be set.