2014-04-29 2 views
0

У меня есть несколько таблиц в PowerPivot:формула DAX для высчитать сумму между 2 датами

  1. таблица со - WKRelStrength поля которого являются:

    Ticker, дата, StockvsMarket% (значения проценты), RS + - (значения могут быть 0 или 1)

  2. Таблица календаря - Cal с полем даты.

Между таблицами существует много отношений.

Я пытаюсь объединить RS + -against каждой строки для дат между 3 месяцами назад и датой для этой строки - т. Е. 3-месячной суммы. Я пробовал многочисленные вычисления, но лучшее, что я могу вернуть, - это круговая эталонная ошибка. Вот моя формула:

=calculate(sum([RS+-]),DATESINPERIOD(Cal[Date],LASTDATE(Cal[Date]),-3,Month)) 

Вот xlsx file.

+0

в принципе, ваша цель - вычислить общее количество? –

+0

Не совсем .... Я пытаюсь вычислить общее количество элементов между датой текущей записи и датой 3 месяца в прошлом – nightwatchman

+0

, можете ли вы повторно загрузить файл - не можете скачать его сейчас, я хочу проверить что-то ... :) –

ответ

0

Я не смог скачать файл, но то, что вам нужно, - это то, что Роб Колли называет «Величайшей Формулой в мире» (GFITW). Это непроверенный, но попробовать:

= CALCULATE (
SUM (WKRelStrength[RS+-]), 
FILTER (
    ALL (Cal), 
    Cal[Date] <= MAX (Cal[Date]) 
     && Cal[Date] 
      >= MAX (Cal[Date]) - 90 
)) 

Заметим, что это даст вам предыдущие 90 дней, что составляет около 3 месяцев, получая ровно предшествующая 3 календарных месяцев может быть возможно, но, возможно, является менее оптимальным, как вы будут сравнивать несколько разную продолжительность времени (личный выбор, я думаю).

Кроме того, это будет вести себя «странно», если у вас есть общее количество, в котором будет использоваться последняя дата в вашем выборе.

0

Прежде всего, формула, которую вы используете, предназначена для работы в качестве меры. Это может не сработать для расчетной колонки. Во-вторых, лучше делать такие агрегации, как уровень Мера, чем в отдельных записях.

С другой стороны, я не совсем понимаю вашу ситуацию, но если для вас абсолютно важно сделать это на уровне записи, вы можете использовать функцию «Раннее».

Если вы хотите отфильтровать функцию, основанную на значении в строке correspontinf, вам просто нужно обернуть имя столбца с помощью функции более раннего времени. Попробуйте изменить LastDate до более ранней версии в вашей формуле.

Смежные вопросы