https://dev.entrouvert.org/https://dev.entrouvert.org/favicon.ico?15861920342019-11-28T20:29:37ZRedmine Entr’ouvertBiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2036972019-11-28T20:29:37ZBenjamin Dauvergne
<ul><li><strong>Fichier</strong> <a href="/attachments/39433">0001-schemas-add-an-absent_label-property-to-Dimension-38.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39433/0001-schemas-add-an-absent_label-property-to-Dimension-38.patch">0001-schemas-add-an-absent_label-property-to-Dimension-38.patch</a> ajouté</li><li><strong>Patch proposed</strong> changé de <i>Non</i> à <i>Oui</i></li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2039612019-11-30T22:52:38ZBenjamin Dauvergne
<ul><li><strong>Sujet</strong> changé de <i>Définir une valeur d'absence pour une dimension</i> à <i>Définir un label d'absence pour une dimension</i></li><li><strong>Description</strong> mis à jour (<a title="Voir les différences" href="/journals/203961/diff?detail_id=179001">diff</a>)</li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2043512019-12-03T12:53:05ZBenjamin Dauvergne
<ul><li><strong>Fichier</strong> <a href="/attachments/39519">0004-tests-keep-new-table-contents-during-tests-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39519/0004-tests-keep-new-table-contents-during-tests-38067.patch">0004-tests-keep-new-table-contents-during-tests-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39520">0003-tests-reformat-json-files-for-easier-update-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39520/0003-tests-reformat-json-files-for-easier-update-38067.patch">0003-tests-reformat-json-files-for-easier-update-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39521">0008-engine-cache-proxy-descriptor-result-on-engine-s-cub.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39521/0008-engine-cache-proxy-descriptor-result-on-engine-s-cub.patch">0008-engine-cache-proxy-descriptor-result-on-engine-s-cub.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39522">0006-engine-cache-EngineDimension.members-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39522/0006-engine-cache-EngineDimension.members-38067.patch">0006-engine-cache-EngineDimension.members-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39523">0005-utils-cache-get_warehouses-result-based-on-schema-fi.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39523/0005-utils-cache-get_warehouses-result-based-on-schema-fi.patch">0005-utils-cache-get_warehouses-result-based-on-schema-fi.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39524">0009-engine-hide-NULL-values-of-json-dimensions-in-inline.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39524/0009-engine-hide-NULL-values-of-json-dimensions-in-inline.patch">0009-engine-hide-NULL-values-of-json-dimensions-in-inline.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39525">0010-engine-use-LEFT-OUTER-JOIN-to-join-with-inline-json-.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39525/0010-engine-use-LEFT-OUTER-JOIN-to-join-with-inline-json-.patch">0010-engine-use-LEFT-OUTER-JOIN-to-join-with-inline-json-.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39526">0011-schemas-add-an-absent_label-property-to-Dimension-38.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39526/0011-schemas-add-an-absent_label-property-to-Dimension-38.patch">0011-schemas-add-an-absent_label-property-to-Dimension-38.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39527">0012-visualization-utils-remove-dead-import-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39527/0012-visualization-utils-remove-dead-import-38067.patch">0012-visualization-utils-remove-dead-import-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39528">0007-engine-do-not-hardcode-cube-s-json-field-name-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39528/0007-engine-do-not-hardcode-cube-s-json-field-name-38067.patch">0007-engine-do-not-hardcode-cube-s-json-field-name-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39529">0001-tests-load-schema2-fixture-only-one-time-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39529/0001-tests-load-schema2-fixture-only-one-time-38067.patch">0001-tests-load-schema2-fixture-only-one-time-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39530">0013-overhaul-of-query-to-table-transformation-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39530/0013-overhaul-of-query-to-table-transformation-38067.patch">0013-overhaul-of-query-to-table-transformation-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39531">0002-tests-use-tabulate-to-compare-tables-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39531/0002-tests-use-tabulate-to-compare-tables-38067.patch">0002-tests-use-tabulate-to-compare-tables-38067.patch</a> ajouté</li><li><strong>Statut</strong> changé de <i>Nouveau</i> à <i>Solution proposée</i></li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2043522019-12-03T12:56:30ZBenjamin Dauvergne
<ul><li><strong>Sujet</strong> changé de <i>Définir un label d'absence pour une dimension</i> à <i>Revoir complètement la génération des tableaux et des valeurs NULL due aux OUTER JOIN</i></li><li><strong>Description</strong> mis à jour (<a title="Voir les différences" href="/journals/204352/diff?detail_id=179338">diff</a>)</li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2043582019-12-03T13:18:01ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>format_json_fixtures.py, dans le json.dump, j'ajouterais separators=(',', ': '), pour ne pas avoir d'espace en fin de ligne. (ou je forcerais à exécuter le script avec Python >= 3.4, où c'est devenu le paramétrage par défaut.</p>
<p>return unicode(self.label); ce serait bien de prendre en compte Python 3 dans le nouveau code.</p>
<pre>
File "/home/fred/src/eo/bijoe/bijoe/visualization/views.py", line 311, in get
data = cell_value(visualization.data()[0][0])
File "/home/fred/src/eo/bijoe/bijoe/visualization/views.py", line 281, in cell_value
if cell.measure.type == 'duration' and cell.value is not None:
AttributeError: 'list' object has no attribute 'measure'
</pre>
<p>Sur une visualisation avec juste "nombre de demandes", pas de regroupements/répétitions, rien. (cell vaut [])</p>
<p>Sur le fond, je ne connais pas assez pour relire, mais ça m'irait d'avoir une petite description de ce qui a été entrepris dans ces patchs. (la description revue contient déjà un peu plus d'infos).</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2043732019-12-03T14:11:23ZBenjamin Dauvergne
<ul><li><strong>Fichier</strong> <a href="/attachments/39536">0004-tests-keep-new-table-contents-during-tests-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39536/0004-tests-keep-new-table-contents-during-tests-38067.patch">0004-tests-keep-new-table-contents-during-tests-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39537">0003-tests-reformat-json-files-for-easier-update-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39537/0003-tests-reformat-json-files-for-easier-update-38067.patch">0003-tests-reformat-json-files-for-easier-update-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39538">0008-engine-cache-proxy-descriptor-result-on-engine-s-cub.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39538/0008-engine-cache-proxy-descriptor-result-on-engine-s-cub.patch">0008-engine-cache-proxy-descriptor-result-on-engine-s-cub.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39539">0006-engine-cache-EngineDimension.members-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39539/0006-engine-cache-EngineDimension.members-38067.patch">0006-engine-cache-EngineDimension.members-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39540">0005-utils-cache-get_warehouses-result-based-on-schema-fi.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39540/0005-utils-cache-get_warehouses-result-based-on-schema-fi.patch">0005-utils-cache-get_warehouses-result-based-on-schema-fi.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39541">0009-engine-hide-NULL-values-of-json-dimensions-in-inline.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39541/0009-engine-hide-NULL-values-of-json-dimensions-in-inline.patch">0009-engine-hide-NULL-values-of-json-dimensions-in-inline.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39542">0010-engine-use-LEFT-OUTER-JOIN-to-join-with-inline-json-.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39542/0010-engine-use-LEFT-OUTER-JOIN-to-join-with-inline-json-.patch">0010-engine-use-LEFT-OUTER-JOIN-to-join-with-inline-json-.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39543">0011-schemas-add-an-absent_label-property-to-Dimension-38.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39543/0011-schemas-add-an-absent_label-property-to-Dimension-38.patch">0011-schemas-add-an-absent_label-property-to-Dimension-38.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39544">0012-visualization-utils-remove-dead-import-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39544/0012-visualization-utils-remove-dead-import-38067.patch">0012-visualization-utils-remove-dead-import-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39545">0007-engine-do-not-hardcode-cube-s-json-field-name-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39545/0007-engine-do-not-hardcode-cube-s-json-field-name-38067.patch">0007-engine-do-not-hardcode-cube-s-json-field-name-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39546">0001-tests-load-schema2-fixture-only-one-time-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39546/0001-tests-load-schema2-fixture-only-one-time-38067.patch">0001-tests-load-schema2-fixture-only-one-time-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39547">0013-overhaul-of-query-to-table-transformation-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39547/0013-overhaul-of-query-to-table-transformation-38067.patch">0013-overhaul-of-query-to-table-transformation-38067.patch</a> ajouté</li><li><strong>Fichier</strong> <a href="/attachments/39548">0002-tests-use-tabulate-to-compare-tables-38067.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39548/0002-tests-use-tabulate-to-compare-tables-38067.patch">0002-tests-use-tabulate-to-compare-tables-38067.patch</a> ajouté</li></ul><p>Ne pas garder les dimensions NULL pour des décomptes à 0.</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2043792019-12-03T14:36:04ZBenjamin Dauvergne
<ul><li><strong>Lié à</strong> <i><a class="issue tracker-2 status-5 priority-4 priority-default closed" href="/issues/38066">Development #38066</a>: utiliser uniquement LEFT OUTER JOIN pour les jointures avec les tables d'item</i> ajouté</li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2043872019-12-03T14:57:39ZBenjamin Dauvergne
<ul></ul><p>Frédéric Péters a écrit :</p>
<blockquote>
<p>format_json_fixtures.py, dans le json.dump, j'ajouterais separators=(',', ': '), pour ne pas avoir d'espace en fin de ligne. (ou je forcerais à exécuter le script avec Python >= 3.4, où c'est devenu le paramétrage par défaut.</p>
</blockquote>
<p>Ok.</p>
<blockquote>
<p>return unicode(self.label); ce serait bien de prendre en compte Python 3 dans le nouveau code.</p>
</blockquote>
<p>Je me suis dit ça mais comme il y a déjà beaucoup de <code>unicode()</code> dans les mêmes fichiers j'ai préféré garder ça comme ça pour tout faire d'une seule traite après plutôt que de mélanger portage python3 et ce ticket dont je savais déjà qu'il allait devenir bordélique.</p>
<blockquote>
<p>[...]</p>
<p>Sur une visualisation avec juste "nombre de demandes", pas de regroupements/répétitions, rien. (cell vaut [])</p>
</blockquote>
<p>Pourtant là ça marche :</p>
<p><a class="external" href="https://statistiques-vincennes.test.entrouvert.org/visualization/warehouse/demarches_vincennes_test_au_quotidien_com/formdata_creche_renouvellement_de_contrat_2017/?drilldown_y=&drilldown_x=&filter__certif=1&filter__receipt_time_2=&measure=count&representation=table&csrfmiddlewaretoken=vg2ccQv7GQw2Q97hG3cyyjIlwP2GLHIzHmWqEKp4NvoTQidL4TetIhkNqvax7uxp&filter__receipt_time_0=&filter__receipt_time_1=&loop=">https://statistiques-vincennes.test.entrouvert.org/visualization/warehouse/demarches_vincennes_test_au_quotidien_com/formdata_creche_renouvellement_de_contrat_2017/?drilldown_y=&drilldown_x=&filter__certif=1&filter__receipt_time_2=&measure=count&representation=table&csrfmiddlewaretoken=vg2ccQv7GQw2Q97hG3cyyjIlwP2GLHIzHmWqEKp4NvoTQidL4TetIhkNqvax7uxp&filter__receipt_time_0=&filter__receipt_time_1=&loop=</a></p>
<p>C'est en local ou tu l'as vu sur une instance de test ?</p>
<p>PS: j'ai compris, j'ai posé un patch au dessus du dernier commit qui corrige le souci je pense.</p>
<blockquote>
<p>Sur le fond, je ne connais pas assez pour relire, mais ça m'irait d'avoir une petite description de ce qui a été entrepris dans ces patchs. (la description revue contient déjà un peu plus d'infos).</p>
</blockquote>
<p>Je suis parti de mon constat sur #38031 : je pensais que ce que demandait Thibault était une évolution mais en fait on calcule très mal les axes des tableaux et de manière différente selon qu'on a deux axes ou un seul (avec deux axes on génère la liste des valeurs pour chaque dimension, dans le cas 1 dimension on prenait directement les valeurs retournées par la requête SQL).</p>
<p>Ça m'a d'abord fait ouvrir <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Development: utiliser uniquement LEFT OUTER JOIN pour les jointures avec les tables d'item (Fermé)" href="https://dev.entrouvert.org/issues/38066">#38066</a>, puis je me suis aperçu qu'agir sur le schéma généré par wcs-olap ne suffirait pas vu que le calcul des tables ne fonctionnait pas bien dans le cas pointé: les tables à deux dimensions ignore les NULL, les tables à 1 dimensions ignore les valeurs auxquelles ne correspondent aucun formulaire dans les deux cas c'est insuffisant; de plus le code coté vue JSON était différent augmentant les chances d'avoir des résultats différents entre bijoe et combo.</p>
<p>Maintentant je construis un defaultdict() "grid" dans table_2d et table_1d qui contient par défaut la mesure vide (en général 0), comme j'ai eu besoin de travailler directement sur la correspondance entre valeur de dimension et leur liste Member(id,label) il a fallu que je revienne au niveau de Engine.query() sur le fait de ne renvoyer que la valeur "value_label" pour chaque dimension, d'où l'ajout dans la génération SQL de ça :</p>
<pre>
- projections.append('%s AS %s' % (dimension.value_label or dimension.value,
- dimension.name))
+ projections.append('%s AS %s' % (dimension.value, dimension.name + '_value'))
+ if dimension.value_label:
+ projections.append('%s AS %s' % (dimension.value_label, dimension.name + '_label'))
</pre>
<p>aussi à plusieurs endroits (paramètre de Engine.query() ou son résultat) je passais soit le nom d'une dimension ou un extrait de ses attributs j'ai trouvé plus simple désormais de travailler directement avec les objets Measure/Dimension et de faire une différence entre les cellules pour les mesures et les dimensions.</p>
<p>Désormais dans <code>cell.dimensions[*].value</code> on a des choses qui correspondent à <code>member.id</code> renvoyé par <code>EngineDimension.members()</code> plutôt que de faire correspondre sur le label (ça ne marchait plus avec la valeur NULL mappé sur "Aucun(e)" faire autrement rendait le code encore plus illisible).</p>
Avec le nouveau code on devrait avoir plusieurs :
<ul>
<li>un traitement correct des dimensions dans tous les cas (on ignore plus les NULL sauf si aucun décompte ne leur est lié, on ignore plus les valeurs non-NULL mais qui ont un décompte à 0 quand il y avait un left outer join)</li>
<li>on ne crée plus de colonne/ligne total si c'est inutile,</li>
<li>on a accès à la définition des dimensions/mesures tout du long de la chaîne de génération des données</li>
<li>les sorties en tableau, en graphique, en ODS et en JSON utilisent toute le même code</li>
<li>la transformation des valeurs en chaîne est gérée au niveau engine et pas visualisation ce qui rend le code plus clair à cet endroit (plus de <code>stringified()</code>).</li>
</ul>
<p>Les premiers commits sur les tests c'est vraiment en passant pour accélérer un peu les tests parce que j'ai du les faire tourner beaucoup pour voir ce qui changeait en bien ou pas au fur et à mesure (on gagne 2 à 3 minutes sur les 16 minutes usuelles).</p>
<p>Les commits autour des colonnes JSON c'est parce que pas mal de tests ont pété dans schema2 car ce sont des visualisations sur le cube "Tous les formulaires" et ça remontait des valeurs NULL en trop (ou ça les oubliait) dans les dimensions.</p>
<p>Je voulais modifier le moins possible mais au fur à mesure j'ai du remonter jusqu'au niveau de la génération des requêtes pour remettre les choses à plat.</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2043892019-12-03T14:59:15ZBenjamin Dauvergne
<ul><li><strong>Fichier</strong> <a href="/attachments/39556">0001-visualization-views-in-JSON-fix-0-dimension-case-380.patch</a> <a class="icon-only icon-download" title="Télécharger" href="/attachments/download/39556/0001-visualization-views-in-JSON-fix-0-dimension-case-380.patch">0001-visualization-views-in-JSON-fix-0-dimension-case-380.patch</a> ajouté</li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2043982019-12-03T15:21:10ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><blockquote>
<p>PS: j'ai compris, j'ai posé un patch au dessus du dernier commit qui corrige le souci je pense.</p>
</blockquote>
<p>(oui c'était en testant la branche en local, et oui ça fonctionne désormais).</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2044392019-12-03T20:06:38ZBenjamin Dauvergne
<ul></ul><p>Le dernier patch est rebasé dans le dernier commit de la branche et la plate-forme de test est à jour sur cette même branche, si personne ne signale de régression en recette je sui d'avis de pousser; après <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Development: utiliser uniquement LEFT OUTER JOIN pour les jointures avec les tables d'item (Fermé)" href="https://dev.entrouvert.org/issues/38066">#38066</a>.</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2045432019-12-04T09:30:04ZBenjamin Dauvergne
<ul><li><strong>Sujet</strong> changé de <i>Revoir complètement la génération des tableaux et des valeurs NULL due aux OUTER JOIN</i> à <i>Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOIN</i></li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2045442019-12-04T09:30:38ZBenjamin Dauvergne
<ul><li><strong>Description</strong> mis à jour (<a title="Voir les différences" href="/journals/204544/diff?detail_id=179511">diff</a>)</li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2045782019-12-04T10:27:30ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Dans <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: Crash sur données bijoe pas équilibrées (Fermé)" href="https://dev.entrouvert.org/issues/37899">#37899</a> j'ai tapé un commit dans combo suite à une visualisation qui était :</p>
<ul>
<li>regroupement vertical : formulaire</li>
<li>répétition : catégorie</li>
</ul>
<p>qui produisait une série de tableaux, genre :</p>
<pre>
Cadre de vie
------------
Démarche 1 | 12
Démarche 2 | 14
Démarche 3 | 7
Signalement
-----------
Arbre | 8
Déchets | 4
</pre>
<p>Après ce ticket, le résultat est :</p>
<pre>
Cadre de vie
------------
Arbre | 0
Déchets | 0
Démarche 1 | 12
Démarche 2 | 14
Démarche 3 | 7
Signalement
-----------
Arbre | 8
Déchets | 4
Démarche 1 | 0
Démarche 2 | 0
Démarche 3 | 0
</pre>
<p>Alors perso, j'étais de toute façon d'avis pour dégager "répétition", ce changement de comportement va juste mettre tout le monde d'accord là-dessus.</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2046502019-12-04T13:37:36ZFrédéric Pétersfpeters@entrouvert.com
<ul></ul><p>Il manque une référence au ticket dans "apply filters to loop dimension enumeration too" et il y une partie "perf" qui s'est glissée dans "engine: propagate filters to dimension's members enumeration" et pourrait être son propre commit; à part ça je n'aurai rien à dire.</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2047562019-12-04T19:10:24ZBenjamin Dauvergne
<ul></ul><p>Frédéric Péters a écrit :</p>
<blockquote>
<p>Il manque une référence au ticket dans "apply filters to loop dimension enumeration too" et il y une partie "perf" qui s'est glissée dans "engine: propagate filters to dimension's members enumeration" et pourrait être son propre commit; à part ça je n'aurai rien à dire.</p>
</blockquote>
<p>Corrigé ces deux soucis, j'ai refait une passer sur les différences dans tests/fixtures/schema2/tables.json et toutes les modifications sont celles souhaitées.</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2047572019-12-04T19:18:24ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Statut</strong> changé de <i>Solution proposée</i> à <i>Résolu (à déployer)</i></li></ul><p>Et tu as poussé dans master.</p> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2047582019-12-04T19:48:57ZBenjamin Dauvergne
<ul></ul><pre>commit 980cb76aaea2fee09039e294e0ea1c992b8a5b6b
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Wed Dec 4 19:30:27 2019 +0100
settings: improve tests runtime by turning DEBUG off (#38067)
commit 10b4405fd11aee06f8c87ae47346c235f5c54a54
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Wed Dec 4 12:53:16 2019 +0100
engine: propagate filters to dimension's members enumeration (#38067)
commit 72e8d4c83e534a5c2d2c02aa9d4b0010c95e4097
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Sat Nov 30 03:59:00 2019 +0100
overhaul of query to table transformation (#38067)
* during query obtain dimension id and label if a different projection
is defined
* use object to materialize query results : Cells, DimensionCell,
MeasureCell
* handle stringification in the *Cell classes
* never ignore NULL dimension's values (it's detected in
Visualization.data() and added to the list of dimension members)
* sum of columns is only computed if there are more than one column
* sum of rows is only computed if there are more than one row
* full sum is only computed if there are more thant one column and more
than one row
* 1 dimension table are computed in the same maner as 2 dimensions
tables, no more discrepancies
* JSON web-service now use the same base methods table_2d() and table_1d()
as the native rendering in bijoe
* EngineDimension.members is specialized for bool dimensions (as it's
always True/False)
commit 6402c7ea99fea8e31634dff6f6e9f17fc393e082
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Sat Nov 30 03:57:21 2019 +0100
visualization/utils: remove dead import (#38067)
commit e8e1d573c57a90c977d1b00239040ebb13319f11
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Thu Nov 28 20:14:16 2019 +0100
schemas: add an absent_label property to Dimension (#38067)
Also force lazy strings to unicode in to_json().
commit 2422edd73341ded8809451fb35b62b5294a02f21
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Fri Nov 29 15:31:25 2019 +0100
engine: use LEFT OUTER JOIN to join with inline json join table (#38067)
commit d603f148607da2cde67ef50194be3993d9efe7fa
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Fri Nov 29 15:31:08 2019 +0100
engine: hide NULL values of json dimensions in inline join table (#38067)
commit 47015684372edfe0a4e53bbe7d717e4bd47fe306
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Fri Nov 29 15:29:48 2019 +0100
engine: cache proxy descriptor result on engine's cubes (#38067)
commit 3f7bedf0d317324eed7af0e32194455172448a64
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Fri Nov 29 15:29:04 2019 +0100
engine: do not hardcode cube's json field name (#38067)
commit a868f11d42b31e38536671ef4b4dd9afd7928abd
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Fri Nov 29 15:27:22 2019 +0100
engine: cache EngineDimension.members (#38067)
commit 33a8eabdba2afba00cdd44146e63889eacf3f704
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Fri Nov 29 15:24:35 2019 +0100
utils: cache get_warehouses() result based on schema files paths (#38067)
commit 9cc619ee0d0b3257e77ed3beb6bb371bbf6a9f36
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Sat Nov 30 03:53:09 2019 +0100
tests: add option to update tables during tests (#38067)
If table contents change, we can measure the change and eventually
accept by copying new_table.json to tables.json. To activate it, use
--bijoe-store-table .
commit 65a78b93dcfdd0bbb305d4674bda163ee8d2b6da
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Fri Nov 29 01:35:15 2019 +0100
tests: reformat json files for easier update (#38067)
Add script format_json_fixtures.py to canonicalize every JSON files in
fixtures to simplify management of changes in visualization results.
commit 0a612f24aca40c403fc3a7964e44134cc156270c
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Sat Nov 30 03:52:14 2019 +0100
tests: use tabulate to compare tables (#38067)
Comparing strings with assert gives better diffs thant comparing list of
lists when using the pytest's `-vv` option.
commit 7f4f373e89e01acca12362aebca42ec8715736cc
Author: Benjamin Dauvergne <bdauvergne@entrouvert.com>
Date: Fri Nov 29 15:26:08 2019 +0100
tests: load schema2 fixture only one time (#38067)
Use special db fixture (using pytest-django primitives and
transaction.atomic()) to initialize bijoe visualization only one time
for all tests on the schema2 fixture. It improves tests run time.</pre> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2047652019-12-05T01:15:35ZFrédéric Pétersfpeters@entrouvert.com
<ul><li><strong>Statut</strong> changé de <i>Résolu (à déployer)</i> à <i>Solution déployée</i></li></ul> BiJoe - Development #38067: Revoir complètement la génération des tableaux et la gestion des valeurs NULL dues aux OUTER JOINhttps://dev.entrouvert.org/issues/38067?journal_id=2047682019-12-05T01:18:31ZBenjamin Dauvergne
<ul><li><strong>Dupliqué par</strong> <i><a class="issue tracker-1 status-5 priority-4 priority-default closed" href="/issues/38052">Bug #38052</a>: KeyError at /visualization/45/json/ (u'None', u"Grand Chamb\xe9ry Cours d'eaux")</i> ajouté</li></ul>