2016-07-12 3 views
0

Мы строим куб для бизнеса, который анализирует Sales for Stock.Как правильно использовать функцию MDX ClosingPeriod

Мне нужна отдельная мера, которая покажет Закрытие запаса.

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

Так что, если мы смотрим на объем продаж с сегодняшнего дня (вторник, 12 июля 2016), то столбец должен показать значение для воскресенья только что прошли, который воскресенье, 10 июля 2016 года

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

  • Если нижний уровень отображается на уровне дня, то для всех дней на этой неделе он должен показывать значение предыдущего воскресенья.
  • Если низкий уровень отображается на уровне неделю, затем каждую неделю должны показать предыдущие недели Заключительное сальдо
  • Etc

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

Мы имеем Date измерение со следующими соответствующими иерархий:

  • Календарь
    • Календарь Год
    • Календарь Quarter
    • Календарь месяц
    • Дата
  • Розничная
    • Retail Год
    • Retail Период
    • Retail Week
    • Дата

Я знаю, что могу использовать ClosingPeriod функцию для этого, но У меня есть проблемы с синтаксисом.

У меня есть внизу, но я получаю NULL. Это мой первый реальный расчет MDX, очень новый для этого!

WITH MEMBER [Measures].[Closing On Hand Qty] AS 
(
    ClosingPeriod(
    [Date].[Retail].[Retail Week], 
    [Date].[Retail].CurrentMember 
), 
    [Measures].[On Hand Qty] 
) 

SELECT 
    [Date].[Retail].[Date].Members ON ROWS, 
    { 
    [Measures].[On Hand Qty], 
    [Measures].[Closing On Hand Qty] 
    } ON COLUMNS 
FROM 
    Retail 
WHERE 
    [Date].[Retail Year].&[2017] 

ответ

0

(примечание: оно не бросает исключение, но стандарт MDX является государственным колоннами перед тем строк в Select п)

ClosingPeriod Я не играл с, но что-то вроде следующего может помочь :

WITH 
MEMBER [Measures].[Closing On Hand Qty] AS 
(
    TAIL(
    DESCENDANTS(
     EXISTING [Date].[Retail].[Retail Week], 
     [Date].[Retail].[Date] 
    ) 
).ITEM(0).ITEM(0) 
,[Measures].[On Hand Qty] 
) 
SELECT 
    { 
    [Measures].[On Hand Qty], 
    [Measures].[Closing On Hand Qty] 
    } ON 0, 
    [Date].[Retail].[Date].MEMBERS ON 1 
FROM Retail 
WHERE [Date].[Retail Year].&[2017]; 

Глядя на документы для ClosingPeriod я думаю, что-то вроде следующего может работать:

WITH MEMBER [Measures].[Closing On Hand Qty] AS 
(
    ClosingPeriod(
    [Date].[Retail].[Date], 
    EXISTING [Date].[Retail].[Retail Week] 
), 
    [Measures].[On Hand Qty] 
) 
SELECT 
    { 
    [Measures].[On Hand Qty], 
    [Measures].[Closing On Hand Qty] 
    } ON COLUMNS, 
    [Date].[Retail].[Date].Members ON ROWS 
FROM Retail 
WHERE [Date].[Retail Year].&[2017]; 
Смежные вопросы