Как я могу написать оператор MDX или запрос, который выбирает клиентов, которые заплатили в прошлом месяце, но не оплатили этот (текущий месяц) месяц? - PullRequest
1 голос
/ 14 декабря 2011

Как я могу написать оператор MDX или запрос, который выбирает клиентов, которые заплатили в прошлом месяце, но не заплатили в этом (текущем месяце) месяц ?. У меня есть куб данных, разработанный и развернутый в Microsoft SQL Server Analysis Services R 2. У меня есть измерения клиента и таблица фактов. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 09 ноября 2015

Прежде всего, вы должны определить текущий месяц и последний месяц.Один из способов сделать это - вычислить его с помощью функции VBA!Date.

Так что, если ваши даты хранятся в формате 12/31/2014 и предполагается, что у вас есть мера Payment и измерение Date с Year-Quarter-Month-Date Иерархия, вам может помочь приведенный ниже код.

WITH MEMBER [Measures].ValueThisMonth AS
(
 [Date].[Year-Quarter-Month-Date].CURRENTMEMBER.PARENT, 
 [Measures].[Payment]
)

MEMBER [Measures].ValueLastMonth AS
(
 [Date].[Year-Quarter-Month-Date].CURRENTMEMBER.PARENT.LAG(1), 
 [Measures].[Payment]
)

SELECT [Client].[Client Name].MEMBERS
HAVING ISEMPTY([Measures].ValueThisMonth)
AND NOT(ISEMPTY([Measures].ValueLastMonth))
ON 0
FROM [Your cube]
WHERE 
StrToMember("[Date].[Year-Quarter-Month-Date].[Date].&[" + FORMAT(VBA![Date](), "MM/dd/yyyy") + "]" + "]")

Если вместо этого вы хотите передать это "текущее" значение из внешнего интерфейса, используйте параметр в предложении WHERE.

0 голосов
/ 15 декабря 2011

Я предполагаю, что у вас есть измерение [Время] и мера, которая содержит значение, если клиент заплатил. Я думаю, что функция Filter() поможет вам сократить набор всех клиентов до тех, которые вам интересны.

SELECT {Filter({[Client].[SomeLevel].members}, ([Time].[LastMonth], [Measures].[whatever]) > 0 AND ([Time].[ThisMonth], [Measures].[whatever]) = 0} ON ROWS, {[Measures].[whatever]} ON COLUMNS FROM [CubeName]

Вы можете решить, что использовать вместо того, где я написал [Time]. [ThisMonth] - смотрите другие ответы здесь в StackOverflow для выбора «текущих» дат.

...