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

SSIS Discussion :

Parmètre dans requête MDX d'un connecteur ADO.NET


Sujet :

SSIS

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut Parmètre dans requête MDX d'un connecteur ADO.NET
    Bonjour,
    J'ai un cube que je veux attaquer en SSIS via un connecteur ADO.NET.
    Pour se faire j'utilise le mode d'accès au donnée en SQL mais je vais faire du MDX.
    Faisons simple : J'ai une table de fait [Fait] composé de deux mesures [Montant] et [Nombre]. J'ai une table de dimension temps [TIME] composé d'un attribut [Annee] et une table de dimension Client [Client] composé du nom du client [Nom].

    Je voudrais avoir en colonne l'année 2012 et 2013 et en ligne les clients. Chaque cellule contiendra le montant.

    Pas de problème pour la requête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT NON EMPTY { [TIME].[Annee].&[2012], [Time].[Annee].&[2013] } ON COLUMNS,
    NON EMPTY { [Client].[Nom[Client] } ON ROWS
    FROM [monCube]
    WHERE  { [Fait].[Montant] }
    Bon, le truc c'est que les années évoluant chaque année, je voudrais mettre 2012 et 2013 en variable. Je sais comment on déclare les variables :
    dans mon exemple ce sera AnneeCourante et AnneePrecedente mais je ne sais pas comment le mettre dans la commande SQL de mon connecteur ADO.NET

  2. #2
    Membre averti
    Homme Profil pro
    Consultant B.I. / .net
    Inscrit en
    Mai 2003
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant B.I. / .net

    Informations forums :
    Inscription : Mai 2003
    Messages : 215
    Points : 445
    Points
    445
    Par défaut
    Bonjour,

    A ma connaissance vous ne pouvez pas faire ça dans une source ADO.net, il ne s'agit pas d'une source ADOMD.net et le connecteur attend du SQL.

    En revanche, après une petite recherche, je suis tombé sur ce tuto qui explique comment faire avec une source OLEDB :
    http://bisherryli.com/2012/08/14/ssi...mdx-from-ssis/

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Merci pour la réponse avec ADO.NET et si ça marche avec OleBd je m'en contenterai.

    En revanche, j'ai parcouru le tuto et je me posais la question : Etes vous sûr que celui-ci explique comment utiliser des paramètres avec une requête MDX : il me semble plutôt expliquer comment eviter d'être bloquer avec une connexion OleBD qui attaque un cube avec une propriété magique (Format = Tabular).

    Sinon ne faudrait il pas regarder du côté de l'instruction StrToSet ou StrToTuple (que je ne maitrise pas trop).

  4. #4
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Bon,
    J'ai essayé un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT NON EMPTY StrToSet(' { [TIME].[Annee].&[' + @[User::AnneePrecedente] + '], [Time].[Annee].&[' + @[User::AnneCourante] + '] }') ON COLUMNS,
    NON EMPTY { [Client].[Nom[Client] } ON ROWS
    FROM [monCube]
    WHERE  { [Fait].[Montant] }
    Avec une déclaration de variable dont l'étendue est la Tache de flux de données de type String. J'ai déclaré les variables AnneePrecedente et AnneeCourante avec les valeurs "2012" et "2013".

    A l'apercu de ma requête j'ai une erreur de type paramètre User::AnneePrecedente n'est pas déclarée.

    Effectivement en OleDb on peut faire une requête à partir d'une variable mais c'est toute la requête qui est en variable et, visiblement, j'ai essayé, on ne peut pas avoir une variable qui contient la requête et dans la chaine de la requête, l'appel d'autre paramètre.

    Si quelqu'un a une idée ça m'aiderait pas mal

  5. #5
    Membre averti
    Homme Profil pro
    Consultant B.I. / .net
    Inscrit en
    Mai 2003
    Messages
    215
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant B.I. / .net

    Informations forums :
    Inscription : Mai 2003
    Messages : 215
    Points : 445
    Points
    445
    Par défaut
    Vous pouvez déclarer une variable dont la valeur est le résultat de la concaténation finale.
    Appelons la "query"

    Pour ça, il faut basculer la propriété "EvaluateAsExpression" de la variable "query" à "true"

    Puis dans la propriété expression de la variable copier :
    "SELECT NON EMPTY StrToSet(' { [TIME].[Annee].&['" + @[User::AnneePrecedente] +" '], [Time].[Annee].&[' "+ @[User::AnneCourante] +" '] }') ON COLUMNS,
    NON EMPTY { [Client].[Nom[Client] } ON ROWS
    FROM [monCube]
    WHERE { [Fait].[Montant] }"
    et utiliser la variable query comme requête source de votre source oleDb.

  6. #6
    Membre actif
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2008
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mars 2008
    Messages : 464
    Points : 268
    Points
    268
    Par défaut
    Bonjour,
    Vous avez raison merci pour le tuyau : c'est bien la propriété EvaluateAsExpression qu'il faut mettre à true.

    Permmettez moi de rajouter quelque truc en plus :
    Apparemment ce n'est pas la propriété Value de la variable qu'il faut changer mais l'expression. (Dans le fenêtre des propriétés).
    De plus il va remplacer la valeur des deux variables AnneePrecedente et AnneeSuivante dans le concepteur de requête OleDb par leurs valeurs réelle.
    Du coup la simple quote ' qui entoure chaque variable est à enlever ' et l'expression StrToSet est devenu inutile.

    En tout cas merci

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

Discussions similaires

  1. [Débutant] Erreur dans le sauvgarde de données avec ado net
    Par boumadani dans le forum VB.NET
    Réponses: 0
    Dernier message: 16/10/2014, 21h08
  2. [MySQL-5.6] Persistence mot de passe Connecteur ADO.NET MySQL
    Par VITALTH dans le forum Outils
    Réponses: 0
    Dernier message: 13/03/2014, 11h31
  3. Addition de valeur de dimension dans requête MDX
    Par VITALTH dans le forum SSAS
    Réponses: 0
    Dernier message: 16/01/2014, 16h34
  4. Connecteur ADO .NET pour oracle
    Par olibara dans le forum Oracle
    Réponses: 5
    Dernier message: 07/06/2011, 09h17
  5. Réponses: 14
    Dernier message: 09/02/2009, 15h19

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