2010-08-19 13 views
1

Dans les services d'analyse, j'ai un cube basé sur les données d'hospitalisation. Pour chaque hospitalisation, il y a potentiellement 9 codes icd et ceux-ci sont chacun stockés dans leur propre champ dans la vue sur laquelle le cube est basé. Ceux-ci sont stockés dans une table enfant dans la base de données relationnelle sur laquelle la base de données SSAS est basée.Problème de requête MDX

Je voudrais interroger le cube pour retourner toutes les lignes qui ont un certain code ICD dans un ou plusieurs des 9 champs de code icd. Il semble qu'il devrait être simple d'avoir ce type de "OU" dans la clause WHERE ou la clause Filter, mais je ne trouve pas la bonne méthode.

Merci à l'avance, Jeremy Schrader

+0

Je pense que vous avez besoin de nous dire ce que votre dimension CIM est comme, pour que nous puissions vous donner un exemple morceau de MDX. Ne vous inquiétez pas de nous dire comment la vue de cube ou la base de données SSAS est arrangée - dites-nous simplement ce que le cube montre à l'utilisateur final. –

Répondre

0

Pour autant que je comprends, vous êtes un type SQL et MDX à nouveau, de sorte que c'est la raison pour laquelle vous avez des difficultés pour la requête.

il serait préférable que vous nous disiez quelles sont les mesures que vous souhaitez sélectionner avec les codes ICD mais je vais essayer de vous montrer un échantillon de requête mdx aussi simple que possible. Votre requête devrait aimer ci-dessous; MDX est un langage de requête hautement avancé et il y a beaucoup plus de concepts que vous devriez connaître/apprendre pour l'utiliser efficacement.

Espérons cette aide.

+0

Définitivement! Ne pensez pas à MDX comme étant quelque chose comme SQL ou vous blessera la tête. Le concept de OR et AND est très différent car vous traitez des agrégations entre catégories. –

+0

Merci pour vos commentaires. Voyez ma réponse ci-dessous et dites-moi si c'est ainsi que vous l'auriez fait. –

+0

Jeremy, Désolé mais vous allez toujours dans le mauvais sens. Après une petite recherche, j'ai trouvé ce document pour vous. Je vous suggère de le lire avant de prendre une décision. [Introduction à MDX] (http: //www.fing.edu.uy/inco/grupos/csi/esp/Cursos/cursos_act/2005/DAP_SistDW/Material/2-SDW-Laboratorio1-2005.pdf). – orka

0

Je suppose que vous auriez une dimension appelée [CIM Codes] avec un seul niveau appelé [Codes] et 9 membres appelés [Code A] et [Code B] ou autre. Peut-être même un membre pour [Pas de code] aussi?

Dans ce cas, votre requête serait en mesure de vous dire le nombre total de cas d'hospitalisation pour chaque code, pendant une certaine période de temps, dans tous les hôpitaux:

SELECT {[ICD Codes].[Codes].members} ON ROWS, 
{[Measures].[Number of Cases]} ON COLUMNS 
FROM [CubeName] 
WHERE ([Time].[2010].[Quarter 1]) 
0

Merci pour les deux vos commentaires. Après avoir recherché plus loin (en particulier un article ici: http://sqlblog.com/blogs/mosha/default.aspx qui utilise la méthode SUBCUBE pour donner une fonctionnalité "OU" mais avec de très mauvaises performances), j'ai réalisé que la construction OU que je cherchais nécessite des informations au niveau de l'enregistrement. travailler après l'agrégation effectuée par le SSAS. Ainsi, j'ai besoin de créer un champ sur la table de faits qui a le résultat de l'instruction SQL "OR" dont j'ai besoin.

Dans ce cas, je vais simplement créer un indicateur pour tout enregistrement qui a une certaine plage de codes ICD dans l'un des 9 champs de code CIM. Ensuite, je vais créer une mesure qui donne un compte de ceux-ci. Heureusement, les exigences de mon application sont que seul un nombre limité de diagnostics doivent être examinés de cette manière (c'est-à-dire toute hospitalisation liée au diabète, au tabac, etc.). Je suis toujours curieux de savoir comment on pourrait aborder cela si vous deviez permettre à l'utilisateur de choisir n'importe quel code ICD. Ma compréhension à ce stade est que vous auriez alors besoin de revenir à SQL pur.

Jeremy