Одна мера в двух разных измерениях - PullRequest
2 голосов
/ 26 ноября 2011

У меня есть таблица фактов с двумя столбцами даты: StartDate и FinishDate:

enter image description here

И у меня есть таблица времени, которая была связана с таблицей фактов двумя различными отношениями.

Я создал измерение времени на основе таблицы времени и включил это измерение в свой куб:

enter image description here

Таким образом, в результате у меня есть два разных измерения (Created_Onи Update_On) на основе таблицы времени.

Теперь я пытаюсь просмотреть свой куб и хочу получить два показателя: количество фактов, которые были созданы за определенный период времени, и количество фактов, которые имеютбыли обновлены в тот же период времени.

Я могу получить каждый из них отдельно, но не могу в одно и то же время:

enter image description here

Как я могу получить его?Нужно ли менять структуру склада?Нужно ли менять куб?Или мне нужно использовать MDX в этом случае?

Ответы [ 2 ]

1 голос
/ 28 ноября 2011

Я нашел решение:

  • У меня есть две записи для одного факта в таблице фактов - одна для начала факта и одна для конца факта
  • У меня есть одно поле времени в таблице фактов
  • Я добавил два поля int в таблицу Facts (A и B). Значения этих полей: (1, 0) для начальных записей и (0, 1) для конечных записей.

Итак, у меня есть записи вроде:

fact1 01.10.2011 1 0
fact1 04.10.2011 0 1
fact2 02.10.2011 1 0
fact2 10.10.2011 0 1

Итак, сумма (A) дает количество начальных фактов за дату. Сумма (B) дает количество завершающих фактов за дату.

0 голосов
/ 27 ноября 2011

MDX Рассчитанные члены - это то, что вы ищете.Нам нужно «изменить» измерение с «Начать» на «Завершить» дату.Как преобразовать дату начала в дату окончания?

Мы можем использовать строковую операцию и «вручную» изменить имя измерения:

StrToMember(  REPLACE( [StartDate].currentmember.uniqueName, "StartDate", "FinishDate" )

Это, если оба измерения даты имеют общую структуру, изменит элемент с даты начала.измерение до даты окончания.

Теперь мы можем просто создать нашу меру, создав кортеж:

WITH MEMBER [MyMeasureOnFinishDate] AS ([Measure].[MyMeasure], [StartDate].defaultmember,StrToMember(REPLACE([StartDate].currentmember.uniqueName, "StartDate", "FinishDate" )

Это не проверено, но вы получите представление о том, как вы можете решить эту проблему

...