Вот пример запроса, показывающего рассчитанную меру, называемую DateDiff. Я предпочитаю разбивать сложные вычисления на более мелкие части для более легкого устранения неполадок. Вы можете комбинировать, если хотите. Я придумал некоторые измерения и меры здесь, но надеюсь, вы можете увидеть, как это работает и адаптироваться соответственно. В принципе, я получаю набор, который объединяет запись с конкретными кодами состояния (или типами кодов) и получает все связанные даты, но только те, у которых есть строка таблицы фактов для меры, называемой статусом (произвольная - любая мера на самом деле таблица сделаю). Затем я выбираю последний из них - при условии, что все в порядке даты, которое должно быть, если ваш размерный вид правильный, и выберите дату с извлечением - а затем, потому что это набор - уменьшите его до элемента с Item (0) .Item (0). Затем введите его имя для использования в функции DateDiff. Я включил некоторую логику, чтобы убедиться, что текущая запись не является членом «Все», и что первая дата не пуста.
with
member [Measures].[First Date] as
iif(Record.Record.CurrentMember Is [Record].[Record].[All],
null,
Extract(
Tail(
NonEmpty(
(Record.Record.CurrentMember,
{[Status Code].[Status].&[1],[Status Code].[Status].&[2],[Status Code].[Status].&[2]},
[Date].[Date].[Date].Members),
[Measures].[Status Count]), 1), [Date].[Date])
).Item(0).Item(0).Name
member measures.[Second Date] as
iif(Record.Record.CurrentMember Is [Record].[Record].[All],
null,
Extract(
Tail(
NonEmpty(
(Record.Record.CurrentMember,
[Type].[Type].&[3],
[Date].[Date].[Date].Members),
[Measures].[Status Count]), 1), [Date].[Date])
).Item(0).Item(0).Name
member measures.[DateDiff] as
iif(IsEmpty([Measures].[First Date]), null,
datediff("d", [Measures].[First Date], [Measures].[Second Date]))
select
{[Measures].[Status Count],
[Measures].[First Date],
[Measures].[Second Date],
[Measures].[DateDiff]}
on columns,
[Record].members on rows
from [status]
Что-то здесь не так. Вы должны добавить, что 'lateiff' в вашем представлении источника данных, а затем использовать его по мере – Lamak
@Lamak Я не совсем уверен, как бы я это сделал. Скажем, это мой DSV, выберите Key1, Key2, Key3, TypeKey, TypeValue from Fact_view – Concept
Я думаю, что я неправильно понял ваш вопрос. Вы хотите вычислить 'DATEDIFF' между строками из того же столбца ?. Если это так, оно не может быть на DSV, и вам понадобится какой-то сложный MDX, который поможет вам с этим – Lamak