Note: You are currently viewing documentation for Moodle 3.0. Up-to-date documentation for the latest stable version of Moodle may be available here: Dashboard Configuration: Raw data (litteral) rendering.

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

From MoodleDocs
 
(15 intermediate revisions by the same user 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 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 : string
     %s : string
Line 40: Line 42:
     etc. (check the PHP sprintf documentation for the complete formatting syntax).
     etc. (check the PHP sprintf documentation for the complete formatting syntax).


===Result Page Size===
==Result Page Size==


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


==Override Big Results security : 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===
 
This checkbox disables for this block instance the "Big Result" security setting (global configuration) that forces data paging for big results. This is usefull for graphed output displaying a lot of data.


==Query caching==
==Query caching==
Line 56: Line 60:
TTL is setup in minutes. Caching is effective when enabled AND a TTL is set higher than 0.
TTL is setup in minutes. Caching is effective when enabled AND a TTL is set higher than 0.


Note : L'activation du cache de résultat est obligatoire pour activer les exports en fichiers.
Note : Outputting results in files will require the cache is enabled.


==Data Cleanup (linear table output only)==
==Data Cleanup (linear table output only)==
Line 68: Line 72:
==Sub-totals==
==Sub-totals==


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.
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.
Filtrage des données
==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 disticnt 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 correponding 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.


Ce chapitre important permet d'obtenir qu'une requête puisse présenter une certaine interactivité à l'exploitation des résultats.
What follows is NOT a valid lcoation:


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".
  SELECT
  data1,data2
  FROM
  table1 t1,
  table2 t2
  GROUP BY
  data2
  <%%FILTERS%%>
  ORDER BY
  data1


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


Soit une requête :
===Filters===


SELECT
Filter will be defined as a semi-column (;) separated list of SQL columns definitions.
firstname as fn,
lastname as ln,
city as ville


....
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".


et des utilisateurs répartis entre 3 villes PARIS, LYON et MARSEILLE.
===Filter names===


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.
Right as for output columns, filter criterias will have comprehensive labels for display.
Filtres


Ce champ accepte une liste à point-virgules (;) de définition de colonnes qui constituent les filtres.
You may enter a semi-column (;) separated list of labels for naming each filter, in same order and amount than the filter definition list.


    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).
Note : There is no provision for escaping litteral ";". Thus no semi-column should be used in names or labels...


==Filter names==
===Filter Defaults===


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.
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:


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.
*FIRST: Chooses first filtering value found in filtering set
*LAST: Chooses last filtering value found in filtering set
*<empty>: No default value, using '*'.


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.
All defaults will be set as a semi-column(;) separated list,in same order and amount than filter declarations.


==Défaut pour les filtres==
Example :


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 usefull 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 paramters 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.


Tree-shaped hierarchic view
[[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 12:06, 4 November 2012

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 dispalyed 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 usefull 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 disticnt 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 correponding 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 criterias 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 usefull 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 paramters 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.