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

SSAS Discussion :

Connaître les généralisations d'un n-uplet [2012]


Sujet :

SSAS

  1. #1
    Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Danemark

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Connaître les généralisations d'un n-uplet
    Bonjour,

    Je suis actuellement en train d'implémenter une méthode de fouille de données qui prend en entrée un cube. Pour ce faire, j'aurais besoin de déterminer quelles sont les généralisations d'un n-uplet à un niveau du treillis donné.

    Illustrons mes besoins par un exemple.

    Soient A et B deux dimensions équipées de hiérarchies : [ALL_A]->[A1]->[A2] et [ALL_B]->[B1]->[B2]. Je suppose que Dom(A1) = {a11,a12,a21,a22} et Dom(A2) = {a1,a2} telle que a1 est la généralisation de a11 et a12 etc... (définition similaire pour la dimension B).

    Ma question est donc la suivante : existe-t-il un moyen simple (une fonction?) via MDX de déterminer les généralisations du n-uplet (a11,b11) au niveau supérieur dans le treillis des cuboïdes ?

    En l'occurrence, les cuboïdes (A1,B2) et (A2,B1) sont les généralisations directes du cuboïde (A2,B2) dans ce treillis. La réponse devant être retournée serait alors l'ensemble de n-uplets {(a1,b11),(a11,b1)}.

    En fait, ma question revient à demander s'il existe l'équivalent de la fonction ancestors non pas pour les membres mais pour les n-uplets.


    D'avance, merci.

    Yoann

  2. #2
    Membre confirmé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 304
    Points : 579
    Points
    579
    Par défaut
    Bonjour,

    Je pense que ça va être problématique en MDX direct.
    Tu ne peux générer que des objets qui sont définis : c'est-à-dire, des membres, des sets ou des tuples.

    Et j'ai bien peur que "{(a1,b11),(a11,b1)}" ne soit rien de tout ça.

    Pourquoi pas une exploration dimension par dimension ?

  3. #3
    Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Danemark

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci pour ta réponse.

    Cependant, il me semble bien que ce que je recherche est bien un SET (un ensemble ordonné, ici l'ordre m'importe peu ceci dit, de tuples). Ce set est défini par "je laisse tous les membres tels quels sauf un dont je cherche la généralisation directe, ie, ascendants(le membre, 1)."

    Un traitement dimension par dimension doit être possible encore qu'extrêmement fastidieux à coder et probablement peu optimisé. L'exemple proposé ne considère que deux dimensions mais les expérimentations seront menées sur un nombre plus conséquents de dimensions.

    Dans l'hypothèse où je me dirige vers cette voie, pouvez-vous m'indiquez quelle est la fonction qui renvoie (si elle existe) l'ensemble des tuples d'un cube svp?

  4. #4
    Membre confirmé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 304
    Points : 579
    Points
    579
    Par défaut
    Oui, c'est vrai un set est un ensemble de tuples (pas exclusivement un ensemble de membres)

    Alors j'ai pas adventure works d'installer pour tester.

    Mais avec un truc de ce genre là dispo sur le technet sur la page de la fonction MDX "Current", je pense qu'en adaptant, il y a moyen

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    WITH
     
    //Creates a set of tuples consisting of all Calendar Years crossjoined with
     
    //all Product Categories
     
    SET MyTuples AS CROSSJOIN(
     
    [Date].[Calendar Year].[Calendar Year].MEMBERS,
     
    [Product].[Category].[Category].MEMBERS)
     
    //Iterates through each tuple in the set and returns the name of the Calendar
     
    //Year in each tuple
     
    MEMBER MEASURES.CURRENTDEMO AS
     
    GENERATE(MyTuples, MyTuples.CURRENT.ITEM(0).NAME, ", ")
     
    SELECT MEASURES.CURRENTDEMO ON 0
     
    FROM [Adventure Works]

  5. #5
    Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Danemark

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci, les fonctions CROSS JOIN et GENERATE semblent intéressantes en effet.

    J'ai malgré tout un mal fou à savoir comment je peux me dépatouiller avec cela. Je dois préciser que c'est ma première expérience en MDX, j'apprends vite mais je pars de loin dans ce domaine :-).

    Si d'autres ont des idées, je suis largement preneur .

    Yoann

  6. #6
    Membre confirmé
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Novembre 2010
    Messages
    304
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2010
    Messages : 304
    Points : 579
    Points
    579
    Par défaut
    Remarque je me dis qu'il n'y a pas besoin de generate. J'avais pensé à ça dans le cas où tu souhaitais retravailler sur les item (et notamment aller chercher un ancestor)

    Un CROSS JOIN sur les allmembers suffit si tu veux juste les tuples du cube.

  7. #7
    Candidat au Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Danemark

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Je pense que je vais me diriger là dessus et trouver les généralisations d'un tuple donné en parcourant (en C++) chacun de ses membres et en le généralisant si possible. Merci beaucoup en tout cas pour avoir pris le temps de me répondre.

    Je ne marque pas encore le topic "résolu" car il ne l'est pas vraiment et peut être que d'autres auront une méthode "full MDX" pour faire ce que je souhaite.

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

Discussions similaires

  1. [MySQL] Comment connaître les noms des tables existantes
    Par Cygnus Saint dans le forum Langage SQL
    Réponses: 7
    Dernier message: 16/03/2006, 21h26
  2. Comment connaître les fonctions d'une DLL ?
    Par bencot dans le forum API, COM et SDKs
    Réponses: 5
    Dernier message: 15/06/2005, 10h25
  3. Réponses: 4
    Dernier message: 03/02/2005, 15h16
  4. Connaître les differentes bases présentes
    Par Drahu dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 26/03/2004, 14h31
  5. Réponses: 5
    Dernier message: 06/03/2003, 14h27

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