les requêtes CTE avec PostgreSQL

Aurélien Morlé juin 7th, 2013



Vous allez peut-être me dire «CTE ? Quésako ?». Les requêtes CTE ou Common Table Expressions peuvent être considérées comme des tables ou vues temporaires qui vont exister seulement dans le cadre de l’exécution d’une requête. Pour notre plus grand bonheur, cela ne se limite pas à une simple vue ou table temporaire, nous pouvons y ajouter de la récursivité.

Les requêtes CTE vont avoir plusieurs utilités notamment pour :

  • rendre plus claires des requêtes complexes construites à partir de résultats d’autres requêtes.
  • ne plus passer par des fonctions en pl/pgsql pour faire de la récursivité

L’instruction permettant cela est WITH [RECURSIVE] qui est disponible depuis postgresql 8.4 pour les requêtes CTE de type SELECT et depuis la 9.1 pour les types INSERT, UPDATE et DELETE.

NB : les requêtes qui seront comprises dans le WITH ne seront évaluées qu’une fois, ce qui permet d’avoir de bonnes performances et le même ensemble de données.

Syntaxe d’une requête CTE

La clause WITH permet de spécifier une ou plusieurs sous requêtes qui pourront être référencées par leur nom dans la requête principale. En option, une liste de noms de colonnes peut être spécifié, si ce n’est pas spécifié, les noms de colonnes sont déduites de la sous-requête.

WITH [RECURSIVE] query_name [ (column_name [,...]) ] AS (SELECT ...) [, ...]
SELECT...

Si RECURSIVE est spécifié, la sous-requête peut se référencer elle même. Une sous-requête de ce type doit avoir la forme :

non_recursive_term UNION [ ALL ] recursive_term

Lire la suite »

Focus sur le client-side storage

Nicolas Chevobbe décembre 13th, 2012

Les moteurs Javascript s’améliorent, de nouvelles API sont introduites, les spécifications HTML et CSS évoluent et permettent au développeur d’envisager des applications purement web là où autrefois nous aurions eu besoin d’applications lourdes ou natives dans le cas d’application pour smartphone/tablette.

Depuis quelques années, ces différentes technologies sont regroupées sous le terme HTML5. Il ne faut pourtant pas se méprendre, ce terme est purement marketing et rassemble un ensemble de technologies qui vont bien au delà du langage HTML.
On pourrait donc citer HTML dans sa version 5, avec de nouvelles balises(video, audio, header, …), CSS3 (bordures arrondies, fonds multiples, dégradés, …) et de nouvelles API Javascript ( IndexedDB, getUserMedia, WebGL, …).

Pour cet article, nous allons nous intéresser aux différentes possibilités de stocker des données coté navigateur.
Il existe de nombreux cas d’utilisation pour le stockage des données coté client plutôt que sur un serveur :

  • Éviter de surcharger un serveur avec trop de requêtes HTTP
  • Économiser de l’espace sur la base de données
  • Économiser le forfait data de vos utilisateurs « mobiles »
  • Pouvoir continuer à utiliser une application lorsqu’il n’y a pas d’accès à internet (trains, avions, zones blanches, …).

Il existe pour cela plusieurs API Javascript avec chacune leurs avantages et leurs inconvénients.


Lire la suite »

L’API REST JasperServer

Bruno Cargnelli décembre 5th, 2012

Préambule

La demande d’intégration de rapports et de gestion de contenu au sein d’une application web est aujourd’hui incontournable. Cependant plusieurs problématiques telles que la gestion des ressources permettant la génération des rapports, la gestion des droits ou bien encore la gestion des différents formats de sortie souhaités peuvent vite devenir complexes à mettre en œuvre et à maintenir.

Cet article à pour objectif de présenter une solution simple et efficace d’intégration de rapport par l’utilisation de l’API REST de JasperServer (version 4.5 Community Edition).

Présentation de JasperServer

JasperServer (disponible sous deux licences : GPL et commerciale) est la plateforme décisionnelle de JasperSoft, elle propose des fonctionnalités de reporting et d’analyse.

JasperServer est un serveur de rapports interactif, autonome et ad hoc intégrable permettant d’obtenir des informations adéquates liées à un besoin, en temps réel. L’interface n’utilise pas de portail tiers contrairement aux autres plates-formes. On dispose ici d’une application web développée spécifiquement qui permet de créer de nouvelles analyses, de publier de nouveaux documents, de gérer les comptes utilisateurs, leurs rôles, ainsi que les droits d’accès aux différents répertoires et fichiers du référentiel.

screenshoot_jasperserver_1

JasperServer intègre également la gestion des paramètres nécessaires à la génération de rapport. Les contrôles d’entrée des rapports peuvent être mono ou multi-valués, le peuplement des contrôles peut se faire soit par une liste de valeurs pré-définies par le créateur, soit afficher le résultat issu d’une requête effectuée sur une base de données.

screenshoot_jasperserver_2

 

L’API REST

Depuis la version 4, JasperServer met à disposition une API RESTful basée sur les standards offerts par le protocole HTTP (utilisation de GET, POST, PUT, DELETE pour la gestion des ressources).

Chaque service offre toutes les fonctions basiques de JasperServer tel que l’exécution, l’ajout ou la suppression de rapport, une gestion complète de son arborescence, etc…

URL type d’accès à l’API REST:

http://<host>:<port>/jasperserver/rest/

Une illustration de l’appel vers chacun des services sera réalisé par un outil appelé REST Client qui est un plugin de FireFox permettant de concevoir des requêtes HTTP basées sur RFC2616 (HTTP/1.1).

L’authentification

L’accès aux ressources par le service REST n’est possible que pour un utilisateur de JasperServer déjà identifié.

A ce titre, l’API offre deux types d’authentifications possibles sur le même service :

URL du service d’authentification
http://<host>:<port>/jasperserver/rest/login/
Méthode Description
POST Méthode d’authentification a privilégier, celle ci retourne un jeton de session réutilisable.
GET Méthode d’authentification de test. Celle-ci est facilement appelable depuis un navigateur web, cependant aucun jeton de session n’est renvoyé.
Argument Type Description
j_username Text Login de l’utilisateur
j_password Text Mot de passe de l’utilisateur

 

 
Lire la suite »

Solution générique d’impression de pages web : la suite…

Charles-Henry Vagner septembre 7th, 2012

Préambule

Je reviens sur l’article « Solution générique d’impression de pages web » que j’avais rédigé il y a quelque temps.

 

Je proposais dans le billet initial de traiter une problèmatique récurrrente des applications web : comment générer un fichier PDF à partir d’une page html ? La démarche était expliquée et la dernière piste de solutions évoquée consistait à utiliser un client web côté serveur, qui permettait de générer le fichier PDF. En l’occurrence il s’agissait de CutyCapt.

Cette solution a ses avantages :

  • L’utilisateur final n’a pas à installer un module dans son navigateur : PDFCreator, DoPDF, etc.,
  • Le prestataire n’a pas à développer deux fois chaque écran « imprimable » : pour une présentation HTML côté client et pour une présentation PDF côté serveur,
  • Le client est satisfait car le prestataire ne développe pas deux fois !

Concrètement, la mise en oeuvre de cette solution a quand même un coût : celui de la mise en place initiale. Une fois le système en place, toutes les ressources adressables de l’application en question seront « imprimables ».

En concusion du billet initial, vous avez pu lire que le principal inconvénient de CutyCapt est son manque de souplesse. Par exemple, le délai nécessaire pour lancer la capture est gênant :

  • si on le fixe trop court, on n’est pas certain du résultat en sortie. C’est le cas lorsque le chargement du site n’est pas totalement terminé,
  • si on le fixe trop long, on perd du temps alors que le serveur reste a terminé son travail.

Depuis l’écriture du billet et pour une mise en oeuvre concrète, j’ai pu mettre en oeuvre le même principe avec une librairie bien plus intéressante : PhantomJS.

 

Lire la suite »

Cartoradio.fr, nouvelle réalisation Atol C&D

Charles-Henry Vagner juillet 18th, 2012

Une fois n’est pas coutume, le billet proposé aujourd’hui n’a pas vocation à présenter une technologie spécifique ou une astuce liée à l’utilisation de tel ou tel composant mais plutôt de percevoir comment plusieurs technologies peuvent, entre elles, s’associer pour répondre le plus efficacement aux souhaits d’un client. En effet, dans le domaine de l’open source (n’est-ce pas vrai ailleurs ?), dès lors que la problématique métier prend une part importante, il est rare de trouver « la solution » qui même en présence d’un paramétrage adapté, permet de satisfaire tout ou partie des besoins attendus.

Le contexte

C’est dans ce contexte d’application « spécialisée » qu’en 2011, l’Agence Nationale des Fréquences a confié à Atol Conseils et Développements la refonte de son site www.cartoradio.fr. Ce site permet au grand public d’accéder de manière cartographique aux informations relatives aux installations radioélectriques (stations émettrices de téléphonie mobile, de télévision de radio, etc.) et aux mesures de champs électromagnétiques implantées/réalisées sur l’ensemble du territoire national.

 

Page d’accueil du site www.cartoradio.fr

Coté fonctionnalités, les principes de l’ancien site Cartoradio ont été conservés mais repensés pour s’adapter aux modes de navigation actuels (interactivité, fonds de cartes tuilés, etc.). La demande était claire ; proposer aux internautes un mode d’accès facilité à de l’information technique reposant sur :

  • Une navigation cartographique fluide avec accès direct aux territoires couverts par l’ANFR (France métropolitaine, départements et territoires d’outre mer),
  • Une recherche par adresse facilitant la localisation sur sa commune, son quartier, sa rue en évitant les zooms successifs sur la carte,
  • Un mode de consultation des informations intuitif permettant de « masquer » la complexité propre à la nature même des données,
  • La possibilité de se constituer des espaces personnels permettant de mémoriser ses favoris cartographiques et de bénéficier de fonctionnalités d’export de données.

 

Lire la suite »

Analysez vos statistiques web avec Google Analytics et Pentaho

Sylvain Decloix février 28th, 2012

Introduction

Mesurer les statistiques de connexion d’un site web est désormais devenu incontournable dans de nombreux domaines d’activités.

Comprendre les comportements, les profils et les caractéristiques des internautes sont des facteurs déterminants pour la visibilité, le succès et donc la longévité de nombreux sites.

Ceci est tout particulièrement vrai pour les sociétés dont le business model repose exclusivement sur une présence sur la toile :  e-commerce, services en ligne…

Habituellement, pour récupérer les statistiques de connexion d’un serveur web, on utilise des outils spécifiques de mesure d’audience : Xiti, Piwik, Mint, Google Analytics

Lorsque ce dernier est utilisé conjointement avec Google AdWords, il devient même possible de calculer le retour sur investissement (ROI) d’achats de mots clés par rapport au trafic généré.

Cet article vous propose de découvrir :

  • Comment récupérer simplement des statistiques de connexion Google Analytics avec l’ETL open source Pentaho Data Integration (PDI)
  • Comment analyser rapidement les données récupérées avec l’outil de modélisation intégré dans PDI
  • Comment publier efficacement les analyses sur un serveur décisionnel Pentaho

Lire la suite »

De la place de GWT

Thomas Broyer février 27th, 2012

Ces derniers jours, la blogosphère francophone s’est enflammée concernant la pertinence de GWT. Florent Garin a ouvert les hostilités jeudi dernier en questionnant cette pertinence, avec une réponse nuancée mais néanmoins plutôt négative. Sami Jaber y a répondu vendredi par un vibrant “oui” (à la limite du fanatisme cependant). Et enfin Ludovic Borie seconde ce dernier avis tout en confirmant les défauts critiqués par le premier.

Je me devais de réagir, n’étant en accord complet avec aucun d’entre eux. Mais tout d’abord, il faut bien avouer que mon avis n’est pas celui d’un utilisateur lambda, étant très impliqué dans le développement même de GWT: outre de nombreux patchs, je suis l’un des rares à pouvoir faire le tri des bugs (les assigner, les fermer), et les bugs concernant RequestFactory me sont quasiment assignés d’office. D’autre part, je n’ai (à mon grand regret) jamais écrit (ou même lu : si vous avez des liens, je suis preneur) de grosse single-page application en JavaScript. Lire la suite »

Les tableaux de bords dans Pentaho avec les C*tools

admin janvier 2nd, 2012

Introduction

Dans une suite décisionnelle, le tableau de bord (ou « dashboard ») est un élément clef pour fournir des informations synthétiques facilement accessibles.

Le pilotage stratégique, le pilotage opérationnel et les indicateurs de performances (KPIs) sont autant de cas d’utilisations des tableaux de bords. La plupart du temps, un dashboard présente un maximum d’informations dans un minimum de place, en faisant appel à une grande interactivité et à de multiples composants graphiques.

Mettre en place des tableaux de bords dans la version libre (Community) de Pentaho n’a pas été toujours une chose très aisée (ce n’est pas le cas de la version Enterprise qui propose un module WYSIWYG full Web à destination des utilisateurs métier).

Dans les premières versions de la plate-forme, les dashboards devaient être codés directement en langage JSP (Java Server Page), ce qui nécessitait une connaissance très avancée des classes Java internes, des libraires graphiques (JFreeChart) et du fonctionnement des séquences d’actions (Xactions).

Très difficile donc (voir impossible) de mettre en place des dashboards sans avoir un profil de développeur JAVA !!

C’est dans ce contexte qu’est né en 2009 le projet communautaire Pentaho CDF (Community Dashboard Framework), à l’initiative de Pedro Alves (de WebDetails)

Son objectif était simple: fournir une API complète permettant de s’affranchir de la complexité interne de Pentaho grâce au paradigme MVC (Modèle-Vue-Contrôleur)

Au fur et mesure, d’autres projets se sont greffés à Pentaho CDF, pour constituer ce qu’on appelle désormais les « C*tools » :

  • CDA (Community Data Access), pour accéder de manière simple et flexible à de multiples sources de données (en SQL, MDX, XML, PDI, Metadata, scripting…). CDA dispose notamment d’un mécanisme de mise en cache et permet d’effectuer des jointures entre des sources hétérogènes par simple configuration XML.
  • CCC (Community Charting Components), une très bonne librairie de visualisation graphique s’appuyant sur Protovis, un projet open source de data-visualization (Javascript+SVG)
  • CST (Community Startup Tabs), un plugin qui permet de paramétrer les onglets à afficher au lancement de la « Pentaho User Console », en fonction des droits de l’utilisateur connecté
  • CDE (Community Dashboard Editor), pour la création et la publication de tableaux de bords directement depuis l’interface web de Pentaho.

Les C*tools permettent de délivrer des tableaux de bord d’une qualité professionnelle, en minimisant la complexité liée à de l’écriture de code. Jetez plutôt un œil sur cette présentation afin d’en prendre pleinement la mesure :

Lire la suite »

L’integration de CMIS avec TYPO3

Fabrice Mouron novembre 3rd, 2011

Nous venons de réaliser une nouvelle extension pour TYPO3 « TYMIS » qui est la contraction de TYPO3 et CMIS. Cette extension permet à TYPO3 d’interagir avec tout entrepôt conforme avec le protocole CMIS.

Cette nouvelle extension va permettre aux entreprises utilisant des solutions d’ECM comme Alfresco, Sharepoint, Documentum, FilNet, Nuxeo, Vignette, etc., d’ouvrir leurs contenus aux utilisateurs de TYPO3. Les contenus de ces solutions pourront être accessible au travers d’un site intranet, extranet, internet ou d’un portail réalisé avec TYPO3.

Un rappel du protocole CMIS

L’accès et le partage des documents sont des enjeux stratégiques pour les entreprises et les collectivités, mais la multiplicité des outils stockant/contenant leurs documents ne leur facilite pas le travail. Il n’est pas rare d’avoir dans une même entreprise (voir un même service) des solutions différentes permettant la gestion, l’archivage et l’accès aux documents. Chaque solution (ECMs, GED, Outil Collaboratif…) gère bien des entrepôts de documents, mais chacune offre des moyens d’y accéder totalement différents.

L’idée de CMIS est de standardiser l’accès aux documents et aux d’informations les décrivant (métadonnées / métatags), et ainsi de pouvoir offrir l’accès à ces données de manière identique à partir de solutions différentes.
Lire la suite »

Geokettle 2.0. Une entrée dans la cour des grands

Cédric Darbon juillet 20th, 2011

Depuis peu, la Release Candidate de Geokettle 2.0 est disponible en téléchargement sur Sourceforge . Pour rappel, cet ETL basé sur Pentaho Data Integration ajoute à ce dernier des fonctionnalités dédiées à la manipulation de l’information géographique. Si les premières versions de GeoKettle proposaient déjà des fonctionnalités intéressantes (cf. billet précédent), il faut bien reconnaître que pour cette version, les équipes de Spatialytics ont clairement mis le paquet afin de proposer une version corrigée et très enrichie de Geokettle. Cette dernière, encore basée sur un coeur PDI 3.2 fonctionne en 32 ou 64bits ; des réflexions sont en cours pour porter les fonctionnalités spatiales vers les versions 4.x de PDI.

Premières impressions

Un installateur dédié

Geokettle dispose désormais d’un script d’installation dédié. L’installation par décompression d’un zip reste bien entendu possible mais désormais, les géomaticiens n’auront plus d’excuses pour ne pas installer cet outil sur leur poste.

Une prévisualisation cartographique des données

Un mécanisme de prévisualisation cartographique est désormais disponible pour toutes les étapes. Un onglet « Vue géographique » permet de visualiser la représentation des différentes colonnes géométriques présentes dans le flux. Les actions de zoom, de centrage, d’interrogation d’objets et de personnalisation des styles cartographiques sont également proposées. A l’usage, cet onglet se révèle bien pratique pour vérifier sur des jeux de données restreints que les traitements à réaliser sont corrects avant de lancer ces derniers sur des gros volumes.

Prévisualisation cartographique des données

Lire la suite »

Suiv »