В моей таблице фактов есть столбец, который определяет, является ли Поставщик старым или новым, на основе следующего описания случая:
CASE
WHEN (SUBSTRING([Reg date], 1, 6) = SUBSTRING([Invoice date], 1, 6)
THEN ('New supplier')
ELSE('Old supplier')
END as [Old/New supplier]
Так, например, если Поставщик был зарегистрирован 201910 и дата Счета Если в 201910 году Поставщик будет считаться «Новым поставщиком» в этом месяце. Теперь я хочу подсчитать количество старых / новых поставщиков для каждого месяца, выполнив четкий подсчет числа поставщиков, что не является проблемой. Последний шаг - это то, где это становится сложным, теперь я хочу подсчитать количество новых / старых поставщиков за 12-месячный период (если было совпадение по дате выставления счета и дате регистрации за любой из отстающих 12 месяцев). Поэтому я создаю следующее выражение mdx:
aggregate(parallelperiod([D Time].[Year-Month-Day].[Year],1,[D Time].[Year-Month-Day].currentmember).lead(1) : [D Time].[Year-Month-Day].currentmember ,[Measures].[Supplier No Distinct Count])
Проблема, с которой я сталкиваюсь, заключается в том, что он будет считать «Поставщик не 1234» дважды, поскольку он был как новым, так и старым в течение этого периода времени. То, что я sh, заключается в том, что, если он найдет одно совпадение, он будет считаться «новым» поставщиком на этот 12-месячный период.
Вот как выглядит результат в итоге, но я хочу, чтобы он был нулевым для «Старого», так как дата Reg и дата Invoice совпадали один раз в течение этого 12-месячный период, который следует считать новым за весь 12-й прокатный месяц 201910
Любая помощь, возможные подходы или идеи высоко ценятся.
С уважением, Рубрикс