IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SSRS Discussion :

[SSAS 2K5] - [SSRS 2K5] : passer les éléments d'un DataSet en tant que paramètres d'une requête MDX


Sujet :

SSRS

  1. #1
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut [SSAS 2K5] - [SSRS 2K5] : passer les éléments d'un DataSet en tant que paramètres d'une requête MDX
    Bonjour à tous,

    je me démène depuis un long moment avec SSAS et SSRS sur un sujet que je ne parviens pas à résoudre : le passage de paramètres de rapport à une requête MDX.

    Voila ce que je souhaite faire :
    - un premier dataset basé sur une requête SQL basique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT ID, LIBELLE FROM MATABLE WHERE ID_PARENT = @ID_PARENT"
    Le paramètre @ID_PARENT est renseigné par le user à l'exécution du rapport.

    - un second DataSet basé sur une requête MDX. Celle-ci doit être filtrée en tenant compte des ID retournés par le premier Dataset.
    Voila ce que j'ai fait pour le moment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT NON EMPTY { [Measures].[NUMBER Count] } ON COLUMNS, NON EMPTY { ([SOC].[SOC].[SOC].ALLMEMBERS ) } DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS FROM ( SELECT ( STRTOSET(@SOCS, CONSTRAINED) ) ON COLUMNS FROM [DW])
    Le paramètre @SOCS est multivalué, il est basé sur les éléments retournés par le premier DataSet.

    Quand j'exécute le rapport :
    je renseigne @ID_PARENT dans la première invite.
    Ma liste de @SOCS est alors bien renseignée.
    Je sélectionne un ou plusieurs éléments dans la liste proposée puis exécute le rapport.
    J'ai alors une erreur me disant que la syntaxe est incorrecte dans le second dataset. la value du paramètre SOCS n'est apparemment pas correcte.

    Je ne vois pas comment procéder pour réussir ce passage de paramètre.
    Auriez-vous une idée pour m'aiguiller s'il vous plaît ?

    D'avance merci.

    Bonne journée et bon week-end

  2. #2
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Le truc c'est que ta liste va te renvoyer un truc comme ça "1,2,3,4,5" vu que tu le récupères côté SQL. Et que ça on peut le tourner dans tous les sens ce n'est pas une expression de set MDX. (Au contraire d'un truc comme {[Soc].[Soc].&[1], [Soc].[Soc].&[2]...})
    Donc une des solutions possibles qui ne modifie rien de ce que tu fais - il est aussi possible de remplir ton premier paramètre en MDX pour avoir directement les MEMBER_UNIQUE_NAME, voire d'appliquer le Join plus tôt - pourrait être d'utiliser une fonction de chaîne Join() pour remettre la définition de tes membres si ça vient du SQL. Bon attention c'est tapé de tête hein c'est probablement pas fonctionnel tel quel.

    Un truc du style

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    STRTOSET
    (
    '{"+"[Soc].[Soc].&["
       +Join(Parameters!Socs.Value,"],[Soc].[Soc].&[")
       +"]"+"}'
    , CONSTRAINED
    )
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Merci François,

    à vrai dire, je m'attendais un peu à cette réponse

    j'ai également essayé de faire en sorte que la requête SQL de mon premier dataset formate le membre qui m'intéresse de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  '[SOC].[SOC].&[{'+ convert(varchar(36),id_soc) + '}]' as id_soc, lib_soc from socs where id_parent = @id_parent
    J'exploite alors id_soc en tant que value utilisée par le paramètre @SOCS de la requête MDX.

    Si je procède comme cela, je n'ai aucun résultat.

  4. #4
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Et en virant le constrained?
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  5. #5
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    En supprimant le CONSTRAINED c'est beaucoup mieux en effet

    Etant donné que le report ne sera exposé qu'en interne, est-ce grave/dangereux/léger de ne pas utiliser CONSTRAINED ?

    D'autre part, je suis maintenant confronté à une chose que je ne comprends pas :
    Lorsque je définis mon paramètre @SOCS, si je ne lui affecte aucune valeur par défaut ou si ma valeur par défaut ne contient aucun élément, le dataset ne contient aucun champ et provoque une erreur à a génération du report.
    Une fois que le dataset a été vidé de ces champs, plus moyen (même en affectant une default value non vide) de récupérer les champs du dataset, je suis obligé de le supprimer puis de le recréer.
    Etrange, non ?

  6. #6
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Pour le CONSTRAINED, essaie de mettre [Soc].[Soc].[Soc].&[xxx] (Dimension-Hiérarchie-Niveau, si Soc est bien le nom des trois) ça l'aidera sûrement. Quant à CONSTRAINED c'est juste pour éviter que quelqu'un te tape le MDX directement et puisse voir ce qu'il souhaite, donc oui ça peut être mieux de le faire tourner avec. CONSTRAINED ne marche que si l'expression est une enfilade de membres qualifiés (i.e. comme ci dessus) séparés par des brackets.

    Quant à ta seconde réponse... étrange effectivement. Pour te protéger de cela vérifie que @SOCS contient bien {} seulement pour symboliser le vide: normalement un StrToSet de {} doit renvoyer quelque chose de valide, vide mais valide.
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  7. #7
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Merci beaucoup pour ton aide François
    La documentation sur le sujet n'est pas extrêmement fournie et j'y vais par conséquent un peu à tâtons...

    J'ai modifié le retour de mon premier DataSet sur le modèle de ce que tu me proposes.
    Mon paramètre @SOCS reçois désormais [Soc].[Soc].[Soc].&[xxx].
    Cela a changé la donne dans la mesure où la valeur par défaut affectée à @SOCS n'est plus prise en compte lors de l'exécution du report.
    Par contre, aucun changement pour ce qui est du CONSTRAINED ou de la perte des champs du dataset en cas de paramètre par défaut vide.

  8. #8
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Et tu as bien des '{}' concaténés au début et en fin de ta chaîne SOCS?
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  9. #9
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    François,

    non, pas de {} dans mon paramètre.
    Celui-ci étant défini comme dépendant d'un premier Dataset, je n'ai pas la main sur la forme du param passé au MDX.

    Est-ce que je peux agir sur ce point directement dans la définition XML du report ?

  10. #10
    Membre émérite Avatar de FrancoisJehl
    Homme Profil pro
    BI Engineer
    Inscrit en
    Juillet 2009
    Messages
    1 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : BI Engineer
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 485
    Points : 2 883
    Points
    2 883
    Par défaut
    Tu peux ajouter des { } avant et après ton paramètre dans la requête cible.
    François JEHL
    BI Engineer | MVP SQL Server
    http://fjehl.wordpress.com
    Pour me contacter, par MP ou ici, mais pas pour des questions techniques.

    /*
    Avant de poster cherchez dans la FAQ et utilisez la fonction "Rechercher" du forum.
    Au moment de poster, posez votre question dans le bon sous-forum (Débuter, SSAS, SSRS, SSIS), en utilisant les TAGs prédéfinis ([2K], [2K5], [2K8], [2K8R2]).
    */

  11. #11
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    François : avec du retard, merci beaucoup pour ton aide. Mon problème est résolu. Ta solution était la bonne.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2005] Problème pour passer un paramètre dans une requête MDX
    Par mochi dans le forum SSRS
    Réponses: 6
    Dernier message: 06/06/2012, 16h26
  2. [SSRS][2k5] Supprimer (ou ajouter) un élément MatrixRow
    Par clementratel dans le forum SSRS
    Réponses: 0
    Dernier message: 30/04/2008, 19h02
  3. [SSRS]Relier un paramètre rapport à une requête MDX
    Par ennamsaoui dans le forum SSRS
    Réponses: 5
    Dernier message: 03/04/2008, 16h25
  4. Réponses: 1
    Dernier message: 11/09/2006, 11h21
  5. Réponses: 4
    Dernier message: 11/01/2006, 09h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo