DB2 Web Query, installation
Il vous faut obtenir le produit 5733WQX
Nous parlons, ici, de la version 2.1 ou 2.2 du produit
Vérifiez que vous avez les produits suivants (5761xxx en V6R10, 5770xxx en V7):
- 5770SS1 Option 3 - Extended Base Directory Support
- 5770SS1 Option 30 - Qshell
- 5770SS1 Option 33 - PASE
- 5761JV1 Option 11 - Java SE 6 32 bit
- 5770DG1 IBM HTTP Server for i5/OS
- (en V6R1 : 5761JC1 IBM Toolbox for Java )
Installez les PTF suivantes (voyez l'APAR II14682 pour actualiser les N°)
- V6R10
- SF99610 , C1256610
- SF99601 (database), niveau 25
- SF99562 (java), niveau 19
- SF99115 (http) niveau 25
- SI45002
- V7R10
- SF99710 , C1116710
- SF99701 (database), niveau 14
- SF99572 (java), niveau 8
- SF99368 (http) niveau 13
- SI45000
- V7R20
- SF99702 ( Database) niveau 1
- SF99716 (Java) niveau 1
- SF99713 (Http) niveau 1
- Installez le produit et les options choisies
- Ajoutez les clefs de licence fournies (ADDLICKEY)
- Puis les PTF associées au produit
- SF99646, niveau 6,7 ou 8, si vous êtes en V6R10
- SF99647, niveau 7 ou 8, si vous êtes en 7.1
- SF99747, niveau 8 si vous êtes en 7.2
Enfin, allez vérifier les derniers niveaux de correctifs ici :
http://www-912.ibm.com/n_dir/nas4apar.nsf/c79815e083182fec862564c00079d117/d686487797ec0c8586257a0a003ca96d?OpenDocument
- V7R30
- Seule la version 2.20 de DB2 Web Query est supportée
Migration
Vous pouvez installer 5733WQX parallèlement à 5733QU2
Tant que vous n'avez pas installé de clé à WQX (vous pouvez l'utiliser 70 jours), les clés de licences sont encore "accrochées" à QU2
Lors du démarrage (QWEBQRY/STRWEBQRY), vous verrez
Attribuez un mot de passe à QWQADMIN (CHGUSRPRF) et si vous êtes avec QCCSID à 65535 un CCSID.
lancez le serveur par STRWEBQRY (bibliothèque QWEBQRY)
Cela doit lancer un certain nombre de JOB :
Tout ce petit monde doit utiliser les ports IP suivants : 12331+12336/12338 (wqlwi80), 12332 et 12333 (edapgwy) , 11335 (jscom3c)
le premier (12331) étant le port d'écoute du serveur WEB associé à DB2 Web Query.
vérifiez le par NETSTAT *CNN
Work with IPv4 Connection Status
Système: AS400
Type options, press Enter.
3=Enable debug 4=End 5=Display details 6=Disable debug
8=Display jobs
Remote Remote Local
Opt Address Port Port Idle Time State
* * hprip-ctl 129:14:00 *UDP
* * hprip-n > 129:14:00 *UDP
* * hprip-h > 129:14:00 *UDP
* * hprip-med 129:14:00 *UDP
* * hprip-low 129:14:00 *UDP
* * 12331 000:33:56 Listen
* * 12332 000:45:46 Listen
* * 12333 123:29:25 Listen
* * 12335 024:40:25 Listen
* * 12336 000:36:20 Listen
* * 12338 030:13:25 Listen
Voyez aussi la commande WRKWEBQRY
Autres commandes (toujours dans QWEBQRY)
les dernières versions nous proposent bien mieux (version standard, pas express) !
En Batch : la nouvelle commande RUNWQFEX, qui sait lancer n'importe quel rapport (y compris générant un graphe par exemple)
Il faudra renseigner
Enfin depuis la version 2.1 (toujours version standard) vous pourrez accéder aux rapports en mode web services
Tapez comme URL http://as400:12331/wqsoa pour un accès SOAP, http://as400:12331/wqrax pour un accès REST
Une authentification HTTP vous sera demandée (ici sous Chrome)
Puis on vous affiche la liste des "Top Level Folder"
Naviguez et cliquez sur un rapport, cela le lance :
L'URL affichée ici, peut être lancée directement (http://AS400:12331/wqrax/report?qwqPath=Top_Level_Folder/chemin/MonRapport.fex)
Pour ignorer la phase d'authentification, modifiez le fichier de paramétrage :
/qibm/userdata/qwebqry/extensions/wqrax.properties ou /qibm/userdata/qwebqry/extensions/wqsoa.properties
et mettez wqraxBasicAuthEnabled=false, vous pourrez alors,
Pour plus de détails voyez :
Avec votre navigateur allez à l'URL suivante : <votre-as400>:12331/webquery
Signez vous QWQADMIN, puis dans administration demandez la console
NB : En dernières version (niveau 7 ou 8 des PTFs), il faudra plutôt utiliser la console de serveur (voir ci-dessous) |
Avant,
Indiquez la page de code cliente : 137 pour l'EBCDIC ou UNICODE
puis indiquez les autres langues possibles (suivant vos utilisateurs) afin de prévoir un changement de langue dynamique (au moins Anglais/Français)
et enfin paramétrez la présentation des données numériques en ajoutant dans les paramètres personnalisés
L'affichage de 3 millions et 25 centimes s'affiche :
CDN = OFF(dft) : 3,000,000.25
CDN = ON : 3.000.000,25
CDN = SPACE : 3 000 000,25
Nouveau en 2013, autorisation du choix du format de sortie, par l'utilisateur
->
Pour terminer vous pouvez éditer /qibm/userdata/qwebqry/ibi/srv77/wfs/etc/nlscfg.err
(/QIBM/USERDATA/qwebqry
est le répertoire contenant NOTRE paramétrage)
en ajoutant :
CURRENCY = EUR
SI vous devez afficher des données en UNICODE
Console du serveur (PTF niveau 7 ou 8) permet de réaliser ces opérations simplement
Choisissez Espace de travail/NLS
vous verrez tous les paramètres liés au langage
C'est ici que vous pourrez indiquer la code page pour UNICODE
L'enregistrement intègre la commande WQSETNLS
Signez vous QWQADMIN puis prenez l'option Centre de sécurité
Vous avez à gauche la liste des utilisateurs autorisés, a droite les droits qui leur sont accordés
Pour ajouter un nouvel utilisateur
Pour chaque répertoire racine (domaine) créé, DB2 Web Query propose 6 groupes
Pour activer un accès par Groupe (option 6 , Runtime Enablement)
Cliquez sur le Groupe d'exécution du Toplevel Folder (-run)
Choisissez parcourir, pour choisir un ou des groupes
Seuls les profils de groupe apparaissent
Et voilà
Tout cela doit apparaitre sous la commande WRKWEBQRY
Ensuite vérifiez que vous pouvez vous connecter en saisissant l'URL
suivante : http://<votre-as400>:12331/webquery/:
EN V2.2
Pour une configuration d'un SSO avec EIM voyez la commande CFGWQSSO (SF99647 level 7)
Gestion des méta données.
Pour que des fichiers base de données soient accessibles, il faut
que les métadonnées aient été générées.
les métadonnées sont la représentation interne
au produit de la structure et des caractéristiques des tables utilisables.
Elles peuvent être crées pour une application (dans un répertoire ou Top Level Folder) et ne seront visibles qu'à l'intérieur de celui-ci
ou bien dans baseapp qui est un répertoire commun et permet de déclarer les fichiers de bases, utilisables dans toutes les applications (client, sociétés, ...)
vous voyez cela dans serveurs de rapports
Ensuite, cliquez droit sur un répertoire
Il y a trois adaptateurs d'installés (il est possible d'en acheter d'autre comme celui permettant d'accéder à MySql ou Oracle)
- DB2 Cli, c'est en fait l'accès SQL à la base de données, offrant aujourd'hui les meilleures performances
il est possible de se connecter à une autre base que la base locale (via DRDA)
Indiquez ensuite le nom DRDA (enregistré par WRKRDBDIRE, ici S270) et le nom de connexion pour DB2 Web Query
- Connexion Explicite, vous oblige à saisir lors de la configuration profil et mot de passe
- Passthru mot de passe, DB2 Web Query réutilise votre profil/mot de passe de connexion initial
- Sécurisé, DB2 Web Query essai d'utiliser votre profil/mot de passe Windows
DB2 Web Query , sait faire ensuite, des jointures entre des tables venant de deux systèmes différents
(synonyme pointant sur une table locale et synonyme pointant sur une table distante). C'est une première !
- DB Héritage permet l'accès, via OPNQRYF, aux fichiers multi-membres.
- Query/400 permet de réutiliser vos Query (pas vos requêtes QM)
Cliquez sur un élément et demandez la création de synonymePour DB2/Cli
Choisissez entre :
- Tables, vues et autres objets, permettant l'accès aux objets base de données
- Tables (fichiers physiques)
- Vues (logiques créés par SQL mémorisant une requête SQL potentiellement complexe)
- Alias (autre nom pour un fichier, pouvant pointer sur un membre particulier)
- MQT (tables contenant le résultat d'une requête et pouvant être rafraîchie)
- Stored Procédure ou Procédure stockée
- External SQL Scripts ou scripts SQL stockés dans l'IFS
•Commençons par les objets SQL :
Indiquez une bibliothèque et un masque (LIKE SQL) pour constituer la liste des objets à sélectionner
Notez l'application (le domaine) pour lequel ce synonyme est créé (dans notre exemple common)
rappel : si vous avez un doute pour le domaine (le titre pouvant être modifié), demandez la liste dans serveurs de rapport
Cochez "Avec clés étrangères" si vous avez mis en place l'intégrité référentielle, voir ci dessousSélectionnez les objets concernés et indiquez un préfixe (ou un suffixe) à attribuer.
Le préfixe semble être la meilleur solution, en effet,
la liste des objets pouvant être manipulés par un rapport est globale et classée par ordre alphabétique
la notion de préfixe (ici avec un _ ) permet de mieux classer cette liste
Et voilà
Quelques remarques sur cette partie :
1/ N'hésitez pas à créer des vues de façon à préparer la donnée , à la simplifier pour l'utilisateur/concepteur de rapports
Fonction(x) | Retourne ? | Exemple |
DAY(D) DAYOFMONTH(D) |
retourne la partie jour de D (doit être une date ou un écart AAAAMMJJ). |
DAY(DATCDE) |
MONTH(D) | retourne la partie mois de D (idem) |
|
YEAR(D) | Retourne la partie année de D (idem) | YEAR(current date - DATCDE) |
DAYOFYEAR(D) | retourne le n° de jour dans l'année (julien) | DAYOFYEAR(datdep) |
DAYOFWEEK(D) | retourne le N° de jour dans la semaine (1 = Dimanche, 2=Lundi, ...) |
DAYOFWEEK(ENTRELE) |
DAYOFWEEK_ISO(D) | retourne le N° de jour dans la
semaine (1 = Lundi, ...) |
DAYOFWEEK_ISO(ENTRELE) |
DAYNAME(d) | retourne le nom du jour de d (Lundi, Mardi, ...) |
DAYNAME(datcde) |
MONTHNAME(d) | retourne le nom du mois de d (Janvier, Février, ...) |
MONTHNAME(datcde) |
DAYS(D) | retourne le nbr de jours depuis 01/01/0001 | DAYS(datcde)- DAYS(datliv) |
QUARTER(D) | retourne le n° du trimestre | QUARTER(DATEFIN) |
WEEK_ISO(D) | retourne le n° de semaine (la semaine 1 est celle qui possède un JEUDI dans l'année.) |
WHERE |
CURDATE() | retourne la date en cours, comme CURRENT DATE | |
CURTIME() | retourne l'heure en cours, comme CURRENT TIME | |
LAST_DAYS(d) | retourne la date correspondant au dernier jour du mois. |
LAST_DAYS('2006-04-21') = 2006-04-30 |
ADD_MONTHS(d, nbr ) | ajoute un nbr de mois à une
date , si la date est au dernier jour du mois, la date calculée est aussi au dernier jour du mois |
ADD_MONTHS('2006-04-30' , 1) = 2006-05-31 |
NEXT_DAYS(d, 'day' ) | retourne le timestamp de la prochaine date ayant le jour demandé |
NEXT_DAYS('2006-12-31' , 'DIM') |
Exemple de vue (offrant 4 zones, une renommée, une utilisant une fonction date, un comptage)
Les autres sources possibles (scripts SQL, procédures) ainsi que le connecteur Query, représentent le résultat d'une requête.
Vous pouvez alors :
faire un rapport simple, pour afficher ce résultat- faire un rapport complexe (sélection, groupage) afin de réaliser à nouveau une requête sur ce résultat temporaire
•Scripts SQL (fichier stream dans l'IFS utilisant la convention d'appellation système [ le / ] )
indiquez le répertoire et l'extension du fichier (.SQL par défaut)
• Procédure cataloguée (appel à un programme avec SET RESULT SETS)
Soit cette table et cette procédure
CREATE PROCEDURE FORMATIONX.LSTCLIENTS (
IN SOCIETE CHAR(1) )
DYNAMIC RESULT SETS 1
LANGUAGE SQL
BEGIN
DECLARE C1 CURSOR FOR SELECT NOCLI , RAISOC
FROM FORLATIONX . MESCLIENTS WHERE SOC = SOCIETE ;
OPEN C1 ;
SET RESULT SETS CURSOR C1 ;
END ;
indiquez la bibliothèque où est enregistrée la procédure par CREATE PROCEDURE et la procédure
ConfirmezRenseignez les paramètres en entrée, s'il le faut.
La procédure doit retourner un jeu de résultat (RESULT SETS) au client.
Le CALL est exécuté, afin de retrouver la structure retournée
Quand vous utiliserez la procédure dans un rapport, vous devez voir deux parties
- INPUT
Réprésentant les paramètres en entrée (à définir en paramètres du rapport)- ANSWERSET1
Réprésentant le jeu d'enregistrements (les données retournées) à utiliser dans le rapport
Exemple
Autres connecteurs livrés de base :
Depuis SF99647 level 4 , nous pouvons demander à DB2 Web Query de travailler avec *LIBL
Pour ne pas mémoriser de bibliothèque dans les Métadonnées, cochez nom à partie unique
il existe un paramètre équivalent sous CRTWQSYN -> QUALLIB(*NO)
Vous travaillez alors avec la liste de bibliothèque de la JOBD de l'utilisateur
connecté.
Si vous souhaitez une liste de bibliothèque dynamique, vous devez :
Dans tous les cas de figure, un synonyme est représenté par deux fichiers (au moins) dans /QIBM/UserData/qwebqry/apps
Par exemple :
FIELDNAME=ADRESSE, ALIAS=ADRESSE, USAGE=A60, ACTUAL=A60,
MISSING=ON, $ pour une zone ADRESSE
FIELDNAME est le nom utilisé par DB2 Web Query, vous pouvez le modifier (ou utiliser le produit optionnel WorkBench)
ALIAS est le nom de zone dans la base, n'y touchez pas !
Il va sans dire qu'il s'agit de copie d'information à un instant T, si la structure change vous devez régénérer le synonyme (Query particulièrement)
Pour faire cela la version 2 propose une option (MétaDonnée/Modifier), permettant de voir les métadonées existantes.
Toujours dans console du serveur
Applications
Remarquez l'option "Modifer en mode texte" qui propose la modification du fichier .mas
L'option "Ouvrir", quant à elle propose une maintenance aisée des métadonnées (ce qui n'était possible avant qu'avec le WorkBench)
Les possibilités d'action étant nombreuses
- Référence à un synonyme existant
-> permet de faire un lien (comme une jointure) entre deux tables, comme le fait de découvrir l'intégrité référentielle
- Segmenter manuellement
-> permet de faire manuellement un segment (un dimension), auquel on ajoutera des colonnes ensuite
- DEFINE
-> Définition d'un champ calculé, comme avec InfoAssist.
- Filtre
-> Création d'un critère (comme un WHERE SQL), prêt à être utilisé dans un rapport
- Calculer (COMPUTE)
-> création d'une zone calculée avec les données agrégées (avec les sommes par exemple), comme avec InfoAssist
Enfin le bouton "Assistant de métadonnées"
Vous donne accès à ces options :
Cette version 2.1 apporte aussi une nouvelle commande pour les synonymes, en mode 5250 :
CRTWQSYN
Paramètres
- FILE nom du fichier ,nom générique (*) ou *ALL
- SCHEMA bibliothèque
- FILETYPE
- *ALL tous les fichiers base de données sont traités
- *TABLE seuls les fichiers physiques sont traités
- *VIEW seules les vues sont traitées
- *ALIAS Alias SQL
- *MQT tables matérialisées
- EXCLSYSFL
- *YES exclure les fichiers catalogues SQL
- *NO ne pas les exclure
- EXCLSRCPF
- *YES exclure les fichiers sources
- *NO ne pas les exclure
- PREFIX ajouter un préfixe au synonyme
- SUFFIX ajouter un suffixe au synonyme
- APPFLR répertoire dans lequel créé les synonymes
- FRNGKEYS
- *NO les synonymes des tables liées par contraintes ne sont pas générés
- *YES les synonymes des tables liées par contraintes sont générés
- QUALIB
- *YES le nom du schéma est mémorisé dans le synonyme
- *NO le nom du schéma n'est pas mémorisé dans le synonyme
- OPTION
- *NONE si le synonyme existe déjà, il n'est pas généré
- *REPLACE si le synonyme existe déjà, une nouvelle version est créée
- *REFRESH, si le synonyme existe déjà il est mis à jour, cela conserve les personnalisation que vous auriez pu faire.
- SHORTALIAS
- *NO le nom long des colonnes est utilisé
- *YES le nom court est utilisé
Enfin, voici la manière d'installer le plug-in Client pour Excel
Copiez les deux fichiers wsclient.xla et wsclient.cfg situés dans /QIBM/ProdData/qwebqry/base80/utilities/quickdata
placez les dans C:\Users\<votre-nom>\AppData\Roaming\Microsoft\AddIns
lancez Excel , cliquez sur Fichier / Options
choisissez Compléments / Web Query Spreadsheet Client et le bouton Atteindre
activez le plug-in
Ensuite, dans une feuille de calcul, utilisez
Indiquez un serveur
identifiez vous
Un Top Level Folder (pour les méta données)
Choisissez une source de données
Concevez votre rapport
à la sortie
les données sont insérées dans la feuille de calcul
la requête peut être modifiée, les données réactualisées :
Sauvegarde
Localisation des informations :
- les synonymes ou méta-données sont stockées dans /QIBM/UserData/qwebqry/apps
- Votre paramétrage dans dans /QIBM/UserData/qwebqry/base80
- Si vous avez personnalisé la serveur d'application /QIBM/UserData/qwebqry/WQLWI80 | WQLIB85
- WQRAX (accès en mode Web service) dans /QIBM/UserData/qwebqry/extension
- Le reste (rapport, planning, RTE) est dans la bibliothèque QWQREPOS
- Enfin les droits sont attribués par des listes d'autorisation QWQxxxxx
le document suivant donne un exemple de CL pour les dupliquer : Backup Guide
Vous pouvez aussi Exporter/Importer des éléments (vous devez être administrateur pour accéder à cette fonction)
Une nouvelle fenêtre s'affiche, glissez alors les répertoires ou les rapports à sauvegarder
Puis sauvegardez
Tout se trouve dans /QIBM/UserData/qwebqry/base80/cm/export
Vous pouvez alors placer le contenu de ce répertoire dans /QIBM/UserData/qwebqry/base80/cm/import d'une autre machine et Importer
Les dernières versions (juillet 2015) proposent une nouvelle commande :
sur la machine source : QWEBQRY/MIGWEBQRY TYPE(*DIFSYS) PHASE(*SAVE)
sur la machine cible : QWEBQRY/MIGWEBQRY TYPE(*DIFSYS) PHASE(*RESTORE)
puis
QWEBQRY/MIGWEBQRY TYPE(*DIFSYS) PHASE(*CLEANUP) sur mes deux systèmes, pour nettoyer les fichiers temporaires
(C) Volubis 2015