PDA

View Full Version : requête mondrian paramétrable



NGUYEN
05-06-2008, 11:43 AM
Bonjour,

J'ai monté un schéma en réseau étoilé et j'arrive à l'interroger avec Mondrian. Tant que je met en dur la requête, tout se passe bien, mon report fonctionne.

SELECT
CROSSJOIN
(
{[activity].ALLMEMBERS},
{[Measures].[Quantity]}
)
ON COLUMNS,
{[period].ALLMEMBERS}
ON ROWS
FROM
cli_emit
WHERE
{[client].[client_123]}

Le problème est que j'aimerais utiliser "cli_name", qui est un paramètre saisi par l'utilisateur. Je récupère bien la valeur, mais je n'arrive pas à la transmettre à ma requête MDX.
Dans les forums, ils disent tous : facile, il suffit d'utiliser Param() ; mais cela n'est documenté nulle part. De plus, impossible de trouver un exemple ou tutorial.

J'ai essayé :
SELECT
CROSSJOIN
(
{[activity].ALLMEMBERS},
{[Measures].[Quantity]}
)
ON COLUMNS,
{[period].ALLMEMBERS}
ON ROWS
FROM
cli_emit
WHERE
{[client].[{PREPARE:cli_name}]}
Mais cela ne fonctionne pas.

Après avoir lu les forums, j'ai essayé d'utiliser les paramètres :
SELECT
CROSSJOIN
(
{[activity].ALLMEMBERS},
{[Measures].[Quantity]}
)
ON COLUMNS,
{[period].ALLMEMBERS}
ON ROWS
FROM
cli_emit
WHERE
{Parameter ("cli_name", [client], [client].[client_123])}
Mais alors, il utilise toujours la valeur par défaut.

Dans les documentation Pentaho, ils disent d'utiliser Param() au lieu d Parameter() ; mais quand j'essaie, Report Designer refuse de valider la requête MDX.

J'ai beau chercher, impossible de trouver un exemple de report pentaho utilisant une requête paramètrable !
Si quelqu'un sait où trouver des exemples, merci de me le communiquer.

Cordialement,
Van Hoang

BPM_PBE
05-07-2008, 12:56 AM
Bonjour,
De mon côté, quand je veux une requête MDX dynamique, j'utilise le Pentaho Design Studio pour afficher des prompts, puis construire la requête MDX en dynamique avec du javascript, et envoyer le tout au composant Pivot Viewer. Cela fonctionne, et permet de rendre les requêtes dynamiques.
Cordialement,
Patrick

NGUYEN
05-09-2008, 10:46 AM
Bonjour,

Je te remercie de ta réponse.
Pour Mondrian, je viens de trouver la réponse ; l'appel au paramètre se fait différement dans une requête MDX par rapport à une requête SQL.

Il fallait écrire :
SELECT
CROSSJOIN
(
{[activity].ALLMEMBERS},
{[Measures].[Quantity]}
)
ON COLUMNS,
{[period].ALLMEMBERS}
ON ROWS
FROM
cli_emit
WHERE
[client].[{cli_name}]

Heureusement que la réponse vient d'être donnée sur un autre forum ; parce que cela faisait plus de 15 jours que je cherchais désespérément.
Avec cela mon report n'a plus que des problèmes de mise en page. Mais cela est une autre histoire.

Cordialement,
Van Hoang