Проблема запроса MDX - PullRequest
       9

Проблема запроса MDX

1 голос
/ 19 августа 2010

В службах анализа у меня есть куб, основанный на данных госпитализации.Для каждой госпитализации существует потенциально 9 кодов icd, каждый из которых хранится в собственном поле в представлении, на котором основан куб.Они хранятся в дочерней таблице в реляционной базе данных, на которой основана база данных SSAS.

Я бы хотел запросить у куба вернуть все строки, которые имеют определенный код ICD в одной или нескольких из 9поля кода icd.Кажется, что это просто, чтобы иметь такое «ИЛИ» в предложении WHERE или в фильтре, но я не нахожу правильный метод.

Заранее спасибо, Джереми Шрейдер

Ответы [ 3 ]

0 голосов
/ 24 августа 2010

Я предполагаю, что у вас будет измерение, называемое [Коды ICD] с одним уровнем, называемым [Коды], и 9 членов, называемых [Код А] и [Код Б] или что-то еще.Может быть, даже участник для [Без кода] тоже?

В этом случае ваш запрос сможет сообщить вам общее количество случаев госпитализации для каждого кода за определенный период времени во всех больницах:

SELECT {[ICD Codes].[Codes].members} ON ROWS,
{[Measures].[Number of Cases]} ON COLUMNS
FROM [CubeName]
WHERE ([Time].[2010].[Quarter 1])
0 голосов
/ 25 августа 2010

Спасибо за ваши отзывы. После того, как я продолжил исследования (в частности, статья здесь: http://sqlblog.com/blogs/mosha/default.aspx, которая использует метод SUBCUBE, чтобы дать некоторую функциональность «ИЛИ», но с очень низкой производительностью), я понял, что конструкция OR, которую я искал, требует информации на уровне записи и поэтому не работает после агрегирования, которое выполняет SSAS. Таким образом, мне нужно создать поле в таблице фактов, в котором есть результат оператора SQL «ИЛИ», который мне нужен.

В этом случае я просто создам флаг для любой записи, которая имеет определенный диапазон кодов ICD в любом из 9 полей кодов ICD. Затем я создам меру, которая подсчитывает их. К счастью, требования моего приложения заключаются в том, что таким образом нужно рассматривать только ограниченное количество диагнозов (то есть любую госпитализацию, связанную с диабетом, табаком и т. Д.). Мне все еще любопытно, как можно подойти к этому, если вам нужно разрешить пользователю выбирать любой код ICD. На данный момент я понимаю, что вам нужно будет вернуться к обычному SQL.

Джереми

0 голосов
/ 21 августа 2010

Насколько я понимаю, вы - парень SQL и новичок в MDX, поэтому у вас есть трудности с запросом.

было бы лучше, если бы вы сказали нам, какие меры вы хотите использоватьвыберите с помощью кодов ICD, но я постараюсь показать вам пример запроса MDX как можно проще.Ваш запрос должен выглядеть следующим образом:

select {Measure1,Measure2,...} on columns
ICDCodeDimension.Children on rows
//{ICDCodeDimension.ICDCode1,ICDCodeDimension.ICDCode5,...} on rows
from Cube

MDX - это очень продвинутый язык запросов, и есть еще много концепций, которые вы должны знать / изучать, чтобы эффективно его использовать.

Надеюсь, эта помощь.

...